Видите ли вы значительное ускорение при использовании единого подключения к веб-сокету для всех запросов на веб-сайте? - PullRequest
1 голос
/ 14 декабря 2011

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

Клиентская сторона будет просто выполнять сервисные вызовы на стороне сервера. Сервер по сути является тупым хранилищем данных и никогда не отправляет HTML. Клиент обрабатывает все шаблоны через JavaScript.

Если бы я установил одно соединение с веб-сокетом и выполнял все запросы через него, я бы увидел значительное ускорение по сравнению с выполнением запросов ajax?

Очевидным преимуществом использования одного соединения является то, что оно должно быть установлено только один раз. Но сколько времени это на самом деле экономит? Я знаю, что установление TCP-соединения может быть дорогостоящим, но в общем случае это имеет значение?

Ответы [ 2 ]

1 голос
/ 14 февраля 2016

Одно HTTP-соединение может использоваться только для одного HTTP-запроса одновременно.Предположим, что страница запросила документ размером 100 КБ, от клиента на сервер больше ничего не будет отправлено до тех пор, пока этот документ размером 100 КБ не будет передан.Это называется блокировка заголовка .Клиент может установить дополнительное соединение с сервером, но также существует ограничение на количество одновременных соединений с тем же сервером.

Одна из основных причин разработки SPDY и более поздние HTTP / 2 решали именно эту проблему.Однако поддержка SPDY и HTTP / 2 пока не так широко распространена, как для WebSocket.WebSocket может помочь вам раньше, потому что он поддерживает несколько потоков в полнодуплексном режиме .

Как только HTTP / 2 будет лучше поддерживаться, это будет предпочтительным решением для этой проблемы, но WebSocket все равно будетлучше для веб-приложений реального времени, где сервер должен передавать данные клиенту.

Взгляните на N2O framework , он был создан для решения проблем, которые я описал выше.В N2O WebSocket используется для отправки всех ресурсов, связанных со страницей.

Сколько скорости вы могли бы получить, используя WebSocket вместо стандартных HTTP-запросов, в значительной степени зависит от вашего конкретного веб-сайта: как часто он запрашивает данные с серверанасколько велик типичный ответ и т. д.

1 голос
/ 14 декабря 2011

Я бы не рекомендовал веб-сокеты для веб-страниц.HTTP 1.1 может повторно использовать TCP-соединение для нескольких запросов, только HTTP 1.0 должен был использовать новое TCP-соединение для каждого запроса.

SPDY , вероятно, протокол, который делает то, что вынаходясь в поиске.См. SPDY: экспериментальный протокол для более быстрой сети , но он поддерживается только Chrome.

Если вы используете веб-сокеты, запросы не будут кэшироваться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...