AJAX - как определить лучшую частоту опроса? - PullRequest
4 голосов
/ 03 января 2011

Я создаю новые функции для небольшого встроенного устройства со встроенным веб-сервером. Он имеет базовый веб-интерфейс с Javascript AJAX. Сегодня я столкнулся с проблемой, когда у меня setInterval вызывал функцию опроса AJAX каждые 500 мс, но в Firebug при мониторинге XHR я часто видел «прерванный». Похоже, что веб-интерфейс не обновлялся надежно, когда все изменилось на встроенной стороне. Я также заметил в Firebug, что загрузка XHR займет около 500 мс. Я изменил частоту опроса AJAX на 1000 мс, и это решило проблему. Но если мой анализ верен, проблема может повториться, если загрузка встроенной стороны займет около 1000 мс.

Итак, мой вопрос, есть ли способ определить оптимальную частоту опроса; где вы хотели бы, чтобы пользовательский интерфейс обновлялся как можно чаще, но вы не хотите перегружать сервер (что довольно медленно и ограничено в моем случае). Кроме того, что на самом деле означает «прервано» в сетевом представлении Firebug XHR?

Спасибо, Фред

Ответы [ 2 ]

5 голосов
/ 03 января 2011

Не используйте setInterval, инициируйте еще один запрос с setTimeout после получения ответа.

4 голосов
/ 03 января 2011

500 мс слишком часто.Попробуйте 2 секунды и работайте в обратном направлении, как только это сработает.Кроме того, вы можете захотеть сделать что-то вроде запуска с 2 секундами, а если не работает после некоторого количества попыток, увеличить до 5 секунд (или что-то еще).Я вижу это очень много.

Обратите внимание, что опрос должен отстой.Если у вас скромная база из 100 одновременно работающих пользователей, и все они используют рабочий процесс, требующий опроса, ваше приложение может быть заполнено сотнями запросов каждую секунду.Другими словами, опрос не очень хорошо масштабируется, если у вас нет ресурсов для горизонтального размещения серверов.В зависимости от вашего варианта использования, может быть, лучше просто отправить первоначальный запрос на асинхронный запуск длительного процесса и попросить пользователя повторить проверку через 2 минуты.

Позвольте мне спросить: сколько времени должнодля выполнения задачи, для которой вы проводите опрос?

...