Я создал сайт, который автоматически обновляет DIV
каждые 15 секунд, используя timeOut
.Это работает довольно надежно, но может потребоваться до 5 минут, прежде чем DIV
будет фактически обновлено, что означает, что скрипт выполнит вызов 20 раз , прежде чем произойдет изменение.Довольно хорошая трата дорогостоящей полосы пропускания и производительности сервера:)
Я много читал о выполнении Long Polling
вместо этого, и я попробовал.
Мой вызов AJAX был:
intval = window.setTimeout(function() {
$.ajax({
type: 'GET',
cache: false,
url: 'url',
beforeSend: function() { $('#timerimg').attr('src', 'img/icons/loading.gif'); },
success: function(data) { $('#ajaxcontent').html(data); },
complete: function() { $('#timerimg').attr('src', 'img/icons/stop.gif'); }
});
}, 15000);
Эта функция постоянно помещалась на обновляемой странице, поэтому функция тайм-аута постоянно повторялась.
Теперь я попытался следовать http://techoctave.com/c7/posts/60-simple-long-polling-example-with-javascript-and-jquery чтобы создать простую функцию длинного опроса
(function poll() {
$.ajax({
type: 'GET',
cache: false,
url: 'url',
success: function(data) { $('#ajaxcontent').html(data); },
complete: poll,
timeout: 30000
});
})();
Если я установлю URL-адрес на hi.txt
и сделаю эту запись Hello World!
, то он постоянно завершается и проводит новый опрос.Что, очевидно, означает много одновременных опросов.
Как мне исправить это?
И:
Автообновление DIV
- это большой графикс расчетами из огромного SQL-Server
запроса.Поэтому, может быть, стоит просто проверить, было ли малейшее изменение в .getRows()
(по сравнению с оригиналом) после SQL-запроса?
Я делаю все это в jQuery и ASP-Classic.