2013-04-05 2 views
0

Мы хотели бы проверить каждые 3 секунды, если в нашей базе данных есть какие-либо обновления, используя jquery $ .ajax. Технологии понятны, но есть ли причины, почему бы не запускать так много вызовов ajax? (браузер, кеш, производительность и т. д.). Веб-приложение работает около 10 часов в день на каждом клиенте. Мы используем Firefox.Значение браузера при вызове ajax каждые 3 секунды

+0

Вы можете добавить определенную точность к вашему вопросу, чтобы получить более точный ответ. Например, расскажите, что работает на стороне сервера и какова цель этого приложения. – dirtv

ответ

1

Ajax-вызовы имеют последствия не на стороне клиента (браузер, ...), а на стороне сервера. Например, каждый вызов ajax является хитом на сервере. то есть. больше потребления полосы пропускания, количество запросов на сервер не увеличивается, что в свою очередь увеличивает нагрузку на сервер и т. д. и т. д. Ajax-вызов на самом деле предназначен для повышения удобства клиентов за счет последствий для Server.

С уважением, Ravi

0

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

Что было бы хорошей практикой, так это дождаться ответа перед тем, как сделать новый запрос, а это значит, что не нужно запускать запросы с помощью setInterval. (В случае, если пользователь потеряет свое соединение, что предотвратит открытие слишком большого количества подключений). Также убедитесь, что все вычисления, связанные с ответом, выполняются при получении следующего ответа.

И если у вас есть доступ к этому серверу, настройте сервер для установки HTTP-заголовков Connection: Keep-Alive, поэтому вы не будете добавлять много накладных расходов TCP к каждому из ваших запросов. Это может ускорить небольшие запросы.

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

1

Вы должны тщательно подумать, прежде чем применять бесконечные повторяющиеся вызовы AJAX с произвольной задержкой между ними. Как у вас было 3 секунды? Если вы собираетесь опросить свой сервер таким образом, вам необходимо уменьшить частоту запросов до минимального числа, насколько это возможно. Вот некоторые вещи, о которых нужно подумать:

  • Действительно ли данные, которые вы собираете, часто меняются?
  • Может ли ваш сервер обрабатывать запрос каждые 3 секунды, как долго выполняется операция для одного запроса?
  • Не могли бы вы увеличить задержку после бездействия или угадать, основываясь на предыдущих ответах сервера, как долго должна быть следующая задержка?
  • Можете ли вы полностью остановить опрос при window loses focus и перезапустить его, когда он снова находится на переднем плане.
  • Если пользователь открывает одну и ту же страницу на веб-сайте 10 раз, ваш сервер должен распознать это и отключить ответы, используя либо cookie с уникальным значением в нем (рекомендуется), либо на основе IP-адреса клиента.

Прежде всего, вместо опроса, рассмотрите возможность использования HTML 5 web sockets для «push» данных клиенту - большинство современных браузеров поддерживают это. Доступны несколько фреймворков, которые вернутся к опросу, если веб-сокеты не будут доступны - один отличный пример .NET - SignalR.

0

Вы ищете любые изменения после каждого 3sec, таким образом, трафик будет увеличен по мере сбора данных после кратковременной и непрерывной работы. Он также может постоянно увеличивать использование памяти на стороне браузера.Поскольку вам необходимо проверить любое обновление, сделанное в базе данных, вы можете использовать любые другие альтернативы, такие как Sheepjax, Comet или SignalR. (SignalR обычно транслирует данные всем пользователям и требует лицензию кометы). Надеюсь, это может вам помочь.

Смежные вопросы