Вопрос об опросе AJAX - блокировка или часто? - PullRequest
6 голосов
/ 07 мая 2011

У меня есть веб-приложение, которое опирается на очень «живые» данные - поэтому оно нуждается в обновлении каждую 1 секунду, если что-то изменилось.

Мне было интересно, каковы плюсы и минусы следующих решений.

Решение 1 - Опрос A Lot

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

Решение 2 - Блок A Lot

Итак, я запускаю запрос к серверу, который истекает через 30 секунд. Сервер следит за данными на сервере, проверяя их раз в секунду. Если сервер замечает, что данные изменились, он отправляет данные обратно клиенту, который предпринимает соответствующие действия.

Сценарий

По сути, данные достаточно малы по размеру, но изменяются через случайные интервалы в зависимости от событий в реальном времени. Дело в том, что веб-интерфейс будет выполнять что-то в районе 2000 экземпляров, поэтому я получаю 2000 запросов в секунду, поступающих от интерфейса, или у меня 2000 длительных запросов, которые занимают до 30 секунд?

Помощь и совет будут высоко оценены, особенно если вы работали с AJAX-запросами в аналогичных объемах.

Ответы [ 3 ]

2 голосов
/ 09 мая 2011

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

2 голосов
/ 07 мая 2011

Рассмотрим лучшую архитектуру.Внедрение такого рода системы обмена сообщениями является тривиальным делом right в чем-то вроде nodeJS .Отправка сообщений будет мгновенной, и вам не нужно будет запрашивать данные с обеих сторон.

Вам не нужно переписывать всю систему: производитель данных может просто POST обновить данныесервер nodeJS вместо того, чтобы записывать их в файл, и в качестве бонуса вам даже не нужно тратить время на дисковый ввод-вывод.

Если вы начали, не зная ни одного nodeJS, вы все равно можете сделать это за паручасов, потому что вы можете просто взломать пример чата.

0 голосов
/ 07 мая 2011

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

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

Удачи!

...