2016-10-25 12 views
2

У меня возникает ощущение, что браузер с поддержкой SPDY будет относиться к нему так, как если бы это был ответ SPDY. Тем не менее, я могу найти только подтверждение того, что ответ H2 будет изящно деградировать до HTTP1.1. Я рассматриваю возможность использования активов в H2-ориентированном виде (множественные запросы, отсутствие переадресации домена и т. Д.), Но мне нужно поддерживать некоторые браузеры, отличные от H2 (например, браузер Android 4.1). Будет ли я в порядке, если все клиенты, по крайней мере, совместимы с SPDY?Что происходит, когда браузер, поддерживающий SPDY, получает ответ HTTP2 (H2)?

Бонусный вопрос: есть ли какие-либо осложнения, связанные с протоколами микширования? Мы находимся в веб-среде, которая не поддерживает H2, но я рассматриваю возможность обслуживания большинства наших активов из CDN. Предположим, что TLS.

ответ

4

Браузеры, поддерживающие SPDY или HTTP/2, используют расширение TLS (более старый NPN или новый ALPN) для согласования протокола, который они говорят по TLS.

Клиент отправляет список протоколов, которые он способен говорить в порядке предпочтения (например, h2,spdy/3.1,http/1.1), а сервер выбирает один протокол среди тех, кто в этом списке, который также поддерживает (и которые соответствуют ограничениям безопасности).

Например, если у вас есть старый браузер, который не поддерживает h2, он будет посылать spdy/3.1,http/1.1, и сервер не будет забрать h2 (даже если он его поддерживает). Если сервер не поддерживает SPDY, единственная опция - http/1.1, и это то, что составляет «изящную деградацию» HTTP/1.1.

Никогда не будет возможности, чтобы клиент попросил говорить SPDY (а не HTTP/2), сервер отвечает HTTP/2, если на сервере не возникли грубые ошибки реализации.

SPDY постепенно прекращается в пользу протокола HTTP/2. Например, последние версии Chrome don't support SPDY anymore.

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

Если ваш сервер может говорить SPDY и HTTP/1.1, а CDN может говорить по протоколу HTTP/2 и HTTP/1.1, вам необходимо использовать браузер, который поддерживает все 3 протокола, чтобы использовать преимущества SPDY и HTTP/2. Браузер может согласовывать SPDY с вашим сервером и согласовывать HTTP/2 с CDN и страницу, состоящую из ресурсов обоих источников.

Однако браузеры скоро упадут (или уже сброшены) SPDY, поэтому с помощью последних браузеров вы можете завершить HTTP/1.1 с вашим сервером и HTTP/2 с CDN, тем самым потеряв преимущества SPDY | HTTP/2 для ресурсов на вашем сервере.