CDN-сервер с http / 1.1 против веб-сервера с http / 2 - PullRequest
0 голосов
/ 07 мая 2019

У меня есть размещенный веб-сервер с http / 2 (средняя скорость) и, кроме того, у меня есть место на быстром CDN-сервере только с http / 1.1.Рекомендуется ли загружать некоторые ресурсы из CDN или я должен использовать только веб-сервер из-за http / 2?Загрузка слишком большого количества ресурсов из CDN может быть узким местом из-за http / 1.1?Было бы любезно получить некоторые подсказки ...

1 Ответ

1 голос
/ 07 мая 2019

Вам нужно проверить.Это действительно зависит от вашего приложения, ваших пользователей и ваших серверов.

В HTTP / 1.1 вы ограничены 6 подключениями к домену .Поэтому размещение контента в отдельном домене (например, static.example.com) или загрузка из CDN - это способ увеличить этот предел за пределы 6. Эти отдельные домены также часто не содержат файлов cookie, поскольку находятся в отдельных доменах, что хорошо для производительностии безопасность.И, наконец, если вы загружаете jQuery из code.jquery.com, вы можете получить выгоду от того, что пользователь уже загрузил его для другого сайта, поэтому сохраните его полностью (хотя с количеством версий библиотек и CDN есть шанс уже использовать широко используемую библиотеку).скачал и в браузере кеш сомнительный на мой взгляд).

Однако для отдельных доменов требуется настройка отдельного соединения.Что означает поиск DNS, TCP-соединение и, как правило, HTTPS-рукопожатие.Все это требует времени, особенно если загружать только один ресурс (например, jQuery), тогда они часто могут съесть любые выгоды от размещения активов на отдельном сайте!Именно поэтому браузеры ограничивают количество подключений до 6 - при увеличении этого показателя доходность снижалась.Из-за этого я какое-то время подверг сомнению ценность защищенных доменов, и люди не должны просто предполагать, что они будут быстрее.

HTTP / 2 направлен на удовлетворение потребности в отдельных доменах (также называемых защищенными доменами).устраняя необходимость в отдельных соединениях, позволяя мультиплексировать , тем самым эффективно устраняя ограничение в 6 «соединений», но без недостатков отдельных соединений.Они также позволяют сжимать заголовки HTTP, снижая производительность при отправке больших файлов cookie туда и обратно.

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

Однако другое преимущество CDN заключается в том, что они обычно распространяются по всему миру.Таким образом, пользователь на другом конце света может подключиться к локальному серверу CDN, а не возвращаться обратно к вашему серверу.Это помогает со временем соединения (так как TCP-рукопожатие и HTTPS-рукопожатие основано на более коротких расстояниях), и содержимое также может кэшироваться там.Хотя, если CDN должен обратиться к исходному серверу для получения большого количества контента, тогда все равно есть задержка (хотя преимущества для настройки TCP и HTTPS все еще есть).

Так что в этом смысле я бысоветую использовать CDN.Тем не менее, я бы сказал, поместите весь контент через этот CDN, а не только его часть, как вы предлагаете, но вы правы, HTTP / 1.1 может ограничить полезность этого.Это странно, поскольку большинство коммерческих CDN поддерживают HTTP / 2, и вы также говорите, что у вас есть «сервер CDN» (а не сеть серверов - множественное число), так что, возможно, вы имеете в виду статический домен, а не настоящий CDN ?

В любом случае все сводится к тестированию, поскольку, как указано в начале этого ответа, это действительно зависит от вашего приложения, ваших пользователей и ваших серверов, и здесь нет единственно верного, однозначного ответа.

Надеюсь, это даст вам представление о том, что нужно учитывать.Если вы хотите узнать больше, потому что Stack Overflow действительно не место для некоторых из этого, и этот ответ уже достаточно длинный, тогда я только что написал книгу, в которой обсуждаются все это большими частями: https://www.manning.com/books/http2-in-action

...