Таймеры Javascript и опрос / планирование Ajax - PullRequest
1 голос
/ 17 сентября 2009

Я искал более простой способ, чем Comet или Long-Polling, для добавления некоторых базовых обновлений ajax в браузер.

В своем исследовании я видел, что люди действительно используют таймеры Javascript для отправки вызовов Ajax с заданными интервалами. Это плохой подход? Это кажется слишком легким. Также учтите, что обновления, которые я буду отправлять, не являются критически важными данными, но они будут отслеживать процесс, который может выполняться в течение нескольких часов.

В качестве примера - надежно ли использовать этот дизайн для отправки ajax-вызова каждые 10 секунд в течение 3 часов?

Спасибо, Брайан

Ответы [ 2 ]

3 голосов
/ 17 сентября 2009

Как правило, использование таймеров для обновления содержимого на странице с помощью Ajax является по меньшей мере таким же надежным, как и использование долгоживущего потокового соединения, такого как Comet. Брандмауэры, короткая аренда DHCP и т. Д. Могут прервать постоянное соединение, но при опросе клиентское соединение будет восстанавливаться при каждом запросе.

Компромисс в том, что опрос часто требует больше ресурсов на сервере. Даже небольшое количество клиентов, запрашивающих обновления каждые 10 секунд, может значительно увеличить нагрузку на ваш сервер, чем обычные интерактивные пользователи, которые с большей вероятностью загружают новые страницы только каждые несколько минут и будут тратить меньше времени на это перед переходом на другой сайт. , Как одна точка данных, у простого игрушечного приложения Sinatra / Ajax, которое я написал в прошлом году, было 3-5 уникальных посетителей в день на обычные «текстовые» страницы, но его URL-адрес обратного вызова Ajax быстро стал самой востребованной частью любого сайта на сервере. включая несколько сайтов с трафиком на порядок (или более) выше.

Один из способов минимизировать нагрузку из-за опроса - отделить код сервера обратного вызова Ajax от общего кода сайта, если это возможно, и запустить его в своем собственном процессе сервера приложений. Эта служба «промежуточного программного обеспечения» может обрабатывать обратные вызовы опроса, вместо того, чтобы отказываться от потока сервера / слушателя Apache / и т.д. что фактически сводится к вопросу «мы уже там?»

Конечно, если вы ожидаете, что только небольшое количество пользователей (скажем, до 10) будут использовать службу опроса за один раз, продолжайте и запустите ее в том же процессе сервера.

0 голосов
/ 20 октября 2009

Я думаю, что одна вещь, которая может быть здесь полезной, заключается в том, что опрос с неизменным интервалом прост, но часто не нужен или нежелателен.

Один метод, с которым я экспериментировал в последнее время, - это положительные и отрицательные отзывы на опрос. По сути, обновление является либо активным (изменения произошли), либо пассивным (новые изменения не были доступны, поэтому они не были необходимы). Обновления, которые являются пассивными, увеличивают интервал опроса. Активные обновления устанавливают интервал опроса обратно к базовому значению.

Так, например, в этом чате, над которым я работаю, разные пользователи публикуют сообщения. Интервал опроса начинается с высокого значения 5 секунд. Если другие пользователи сайта общаются, вы будете получать обновления каждые 5 секунд об этом. Если активность замедляется, и никто не общается в чате с момента отображения последнего сообщения, интервал опроса становится все медленнее и медленнее примерно на секунду каждый раз, в конечном итоге ограничиваясь каждые три минуты. Если через час кто-то снова отправляет сообщение чата, интервал опроса внезапно падает до 5-секундных обновлений и начинает замедляться.

Высокая активность -> частые опросы. Низкая активность -> в конечном итоге очень редкий опрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...