2012-01-17 4 views
8

Я создаю динамический поиск (обновляется с каждым нажатием клавиши): моя текущая схема заключается в каждом нажатии клавиши отправить новый запрос AJAX на сервер и вернуть данные в JSON.WebSockets: полезно для уменьшения накладных расходов?

Я рассмотрел возможность открытия WebSocket для каждого сеанса поиска, чтобы сохранить некоторые накладные расходы. Я знаю, что это сэкономит время, но вопрос в том, действительно ли это стоит, учитывая эти параметры: 80 мс среднее время пинга 166ms: время между каждым нажатием клавиши, если пользователь набирает относительно быстро В худшем случае скорость передачи 1 МБ/с, причем каждый пакет данных должен приниматься при каждом нажатии клавиши не более 1 КБ. Приложение также занимает примерно 30-40 мс, чтобы сварить результаты поиска в DOM.

Я нашел это: HTTP vs Websockets with respect to overhead, но это был другой вариант использования.

Будут ли веб-порты сокращать что-либо помимо чистых HTTP-накладных расходов? Сколько стоит HTTP-накладные расходы (при отсутствии куки-файлов и минимальных заголовков)?

Я думаю, что HTTP-запросы открывают новый сетевой сокет для каждого запроса, в то время как WebSocket позволяет нам использовать только один раз. Если мое понимание верное, каковы фактические накладные расходы при открытии нового сетевого сокета?

+3

WebSockets стоит того, когда сервер помещает сообщения в клиенте – Raynos

+0

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

+0

Вот что я делаю прямо сейчас. Он работает безупречно, но я обеспокоен тем, что при его развертывании приложение может начать бороться в более медленные времена ping. Проверьте приложение: http://77.70.33.151:8233/ Вы можете найти что-то вроде «firefox», «chromium» или «mozilla». – Ivo

ответ

3

Кажется, что WebSockets обеспечивают лучшую производительность в таких ситуациях, как ваша.

Web двинул

  • маленького рукопожатие заголовок
  • полных дуплексной связи после рукопожатия.
  • После того, как соединение будет установлено, только 2 байта добавляются на передаваемый запрос/ответ

Http

  • заголовки HTTP посылаются вместе с каждым запросом

На С другой стороны, WebSocket является относительно новой технологией. Было бы разумно исследовать возможности веб-браузера, связанные с сетевыми проблемами.

Ref:

http://websocket.org/quantum.html

http://www.youtube.com/watch?v=Z897fkPn7Rw

http://en.wikipedia.org/wiki/WebSocket#Browser_support

+0

Спасибо, видео ответило конкретно на мой вопрос (чистые служебные данные HTTP). Что касается поддержки браузеров, нетрудно реализовать резервные механизмы или использовать библиотеку, которая делает это для вас (например, socket.io). – Ivo

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