Частота опроса AJAX - длительный опрос или длительный опрос?

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

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

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

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

Ответы

Ответ 1

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

Если ваш опрос получателей, среднее время поездки сообщения будет половину вашего интервала опроса.

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

Если вы делаете чат-обмен сообщениями, продолжайте опрос; его юзабилити.

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

Ответ 2

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