Частота опроса AJAX - длительный опрос или не длительный? - PullRequest
14 голосов
/ 01 октября 2010

Я создаю компонент веб-страницы, который требует относительно постоянного опроса базы данных.Я вижу два разных подхода для этого, и мне интересно, если один из них лучше, чем другие, или я пропускаю третий вариант.

1) Отправлять AJAX-запрос каждые 1 или2 секунды, чтобы проверить наличие обновлений.Каждый запрос немедленно возвращается, независимо от того, есть ли новые данные.
2) Запустите один запрос AJAX, который не будет возвращаться до тех пор, пока он не получит данные или не истечет время ожидания.При любом из этих событий он запускает следующий запрос.(Я думаю, это называется длинным опросом?)

Количество запросов к базе данных будет одинаковым с любым из них, но с # 2 было бы меньше запросов на запуск из браузера, что могло бы сэкономить пропускную способность и ресурсы клиента.Для сервера, лучше ли иметь один PHP-запрос, который остается активным и спит между запросами, или он запускается каждые несколько секунд, опрашивает БД, а затем выключается?Или нет никакой разницы, и я слишком много об этом подчеркиваю?

РЕДАКТИРОВАТЬ: я полагаю, я должен также заявить, что это виджет чата большого веб-приложения.Небольшая задержка в общении не убьет пользователя, так как чат является второстепенной функцией.

Ответы [ 2 ]

8 голосов
/ 01 октября 2010

Длинный опрос будет масштабироваться лучше (т. Е. Меньше нагрузка на сервер), чем опрос, и в то же время даст намного лучшее время ответа.

Если ваш получатель опрашивает, среднее время отправки сообщения будет вдвое меньше интервала опроса.1003 *

При длительном опросе, его мгновенном - сервер ждет только, если нечего сказать.

Если вы ведете обмен сообщениями в чате, выполните длинный опрос;это удобство использования.

Недостатком длинного опроса является то, что его сложнее реализовать;но это не намного сложнее, и это широко применяется.Поэтому, если вы не можете использовать готовый фреймворк для своего веб-сервера по своему выбору, вы можете разумно написать один и заставить его работать.

2 голосов
/ 01 октября 2010

Вы также можете посмотреть websockets , часть новейших браузеров (или эмулировать с помощью Flash-файла , который вы перетащите на страницу)

...