#ajax #performance #real-time
#ajax #Производительность #в режиме реального времени
Вопрос:
Например, я смотрел на такие вещи, как поиск Google в реальном времени (не Google instant) и facebook chat. Данные поступают к ним постоянно, но с непредсказуемыми интервалами. Однако, кажется, что это всегда происходит почти мгновенно.
Я реализовал нечто подобное на http://malachy.org.uk/stream , однако способ, которым я это сделал, заключается в том, что я проверяю XHR на наличие обновлений каждые пару секунд, что, я думаю, немного неэффективно, и в любом случае, проверяя журнал сетевых запросов в firebug в Google realtime, например, я не вижу, чтобы временные интервалы появлялись почти с такой же скоростью, как новые сообщения (в любом случае, на модные темы).
Есть идеи, как это делается?
Приветствия
Ответ №1:
Посмотрите на:
Поскольку протокол HTTP (используемый AJAX) является типичным протоколом запроса / ответа, простого способа добиться этого не существует. Обратный AJAX использует несколько хитроумных методов, таких как длительный опрос, является ли WebSockets совершенно новой технологией где-то около HTML5, полностью решая эту проблему (пока недостаточно хорошо зарекомендовавшую себя и внедренную).
Ваше решение (запрашивать сервер каждые несколько секунд) является самым простым, но оно приводит как к большому объему сетевых вызовов, так и иногда к неприемлемой задержке.
Комментарии:
1. Хм, ну, теперь моя идея состоит в том, чтобы иметь python CGI, который запрашивает новые данные и выдает их при наличии (т. Е. длительный опрос). Причина, по которой я использую python, заключается в том, что длительно работающие PHP-скрипты, по-видимому, будут использовать рабочие процессы Apache.