Что лучше в отношении производительности;поддерживать жизнь или CDN - PullRequest
0 голосов
/ 26 мая 2018

Что лучше по производительности?keep-alive соединение для получения ресурсов с того же сервера или получения ресурсов из общедоступного CDN.

Редактировать 1:

  • Я имею в виду под производительностью = загрузка страницывремя
  • Я сравниваю эти 2 сценария, чтобы найти, что быстрее при загрузке страницы:

    1 - Если я обслуживаю HTML и JavaScript с одного (моего) сервера.Это выиграет от поддержания соединения, что сократит количество рукопожатий TCP / TLS на разных серверах.

    2 - Если я использую CDN для файлов javascript, это будет выгодно от преимуществ CDN, но также потребует несколькихTCP-соединения с различными серверами для рукопожатия.

Редактировать 2:

См. Ниже изображения из книги " Высокопроизводительная сеть браузера"Автор: ИЛЬЯ ГРИГОРИК"

Следующие 2 изображения объясняют запрос HTML с моего сервера и CSS с другого сервера.Поддержание активности не будет преимуществом, так как необходимо 2 запроса от разных серверов, что увеличит время для TCP-рукопожатий и медленного запуска.

HTTP Request for HTML on my server Another request for CSS on CDN

Это изображение ниже для показа HTML и CSS с одного и того же сервера с использованием keep alive

HTML & CSS request from same server using CDN

Сравнение времени загрузки:

1- Мой сервер + CDN = 284 мс

2- Только мой сервер + поддерживать активность = 228 мс

Разница между этими значениями составляет 56 мс, необходимые для установления связи TCPСервер CDN.

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

1 Ответ

0 голосов
/ 26 мая 2018

Лучше всего поддерживать активность с CDN.

Это ортогональные вещи:

  • keep-alive - это функция HTTP 1.1, позволяющая сократить издержки протокола,
  • CDN уменьшает расстояние до сервера и увеличивает пропускную способность.

Цель обоих - уменьшить задержку.Keep-alive должен просто всегда быть включен.Большинство современных HTTP-серверов поддерживают его.

Хотя для статического контента CDN обычно обеспечивает гораздо более заметное улучшение производительности.Он по-прежнему будет использовать keep-alive, только с сервером CDN.

Если я использую CDN для файлов javascript ... для этого потребуется несколько соединений TCP с разными серверами

Даже если вы обслуживаете все со своего собственного сервера, большинство браузеров одновременно открывают 2-4 соединения.Поэтому не имеет большого значения, обслуживаете ли вы HTML с одного сервера и JS с другого.

Кроме того, большинство CDN выбирают сервер один раз (с использованием DNS), а затем ваш клиент связывается с одним и тем же сервером.Таким образом, один сервер для HTML и один для JS не более.Или вы можете выбрать для прокси все, в том числе динамический HTML, через CDN.

...