Ответ 1
Конвейеризация отключена по следующим причинам:
- Firefox:
Большая проблема, откровенно говоря, была главой блокировки строк и ее воздействием на производительность и надежность. Наивные трубопроводы просто ухудшают работу.
- Chrome:
Опция включения конвейерной обработки была удалена из Chrome, так как существуют известные сбои в ошибках и известные проблемы блокировки перед очередью. Существует также большое количество серверов и промежуточных ящиков, которые ведут себя плохо и непоследовательно, когда конвейерная обработка включена. Пока это не будет разрешено, рекомендуется, чтобы никто не применял конвейерную обработку. Для этого в настоящее время требуется специальная сборка Chromium.
В общем:
Багги-прокси-серверы все еще распространены, и это приводит к странным и неустойчивым поведениям, которые веб-разработчики не могут предвидеть и легко диагностировать.
Конвейерная обработка сложна для правильной реализации: размер передаваемого ресурса, эффективный RTT, который будет использоваться, а также эффективная пропускная способность, имеют прямую зависимость от улучшения, обеспечиваемого конвейером. Не зная об этом, важные сообщения могут задерживаться за несущественными. Понятие важности даже развивается во время макета страницы! Таким образом, конвейерная обработка HTTP приводит к незначительному улучшению только в большинстве случаев.
Конвейеризация подчиняется проблеме HOL.
HTTP/2 предлагает альтернативу:
С помощью HTTP/1.x браузер имеет ограниченную возможность использовать вышеприведенные данные: протокол не поддерживает мультиплексирование, и нет способа передать приоритет запроса серверу. Вместо этого он должен полагаться на использование параллельных соединений, что позволяет ограничить parallelism до шести запросов на источник. В результате запросы ставятся в очередь на клиенте до тех пор, пока не будет доступно соединение, что добавит ненужную задержку в сети. Теоретически, HTTP Pipelining попыталась частично решить эту проблему, но на практике она не получила поддержки.
HTTP/2 устраняет эти неэффективности: устранение запросов и блокировка заголовка устранены, так как браузер может отправлять все запросы в момент их обнаружения, а браузер может передавать предпочтения приоритета потока по потоковым зависимостям и весам, что позволяет сервер для дальнейшей оптимизации доставки ответа.
Также может использоваться прокси-сервер:
Вы можете попробовать что-то, что я сделал, чтобы ускорить работу Konqueror в KDE3. Я был недоволен тем, что Konqueror не имел конвейерной обработки HTTP, поэтому после некоторого поиска я установил Polipo в качестве локального прокси HTTP/HTTPS/FTP и установил Konqueror для его использования (localhost на порту 8123, если я правильно помню). В дополнение к конвейерной обработке HTTP, Polipo также обеспечил улучшенное кэширование, и поскольку это был прокси-сервер, я мог бы установить для каждого браузера его использование, и кеширование будет совместно использоваться браузерами. (Это также означает, что рекомендуется отключить каждое независимое от браузера кеширование.)
Ссылки
-
Chromium Issue 364557: Удалить код конвейерной обработки из Chrome
-
Изменения в WinHttp в Windows 7 и далее по HTTP/1.0 - HTTPContext
-
Проверка длины и передачи-кодирования в IE10 Download Manager - IEInternals
-
Использовать разумные заголовки с длинным проживанием - IEInternals
-
Производительность веб-сайта: 2015: март | Сообщество Akamai
-
HTTP: HTTP/2 - высокопроизводительная браузерная сеть (O'Reilly)
-
SpeedGuide:: Internet Explorer, Chrome, Firefox Web Browser Tweaks