Примечание: ниже располагается перевод очередной заметки от Steve Souders Sharding Dominant Domains. Steve рассматривает основные плюсы и минусы распределения ресурсов по нескольким доменам. Мои комментарии далее курсивом.
Эта заметка является частью моей новой книги Even Faster Web Sites. Предыдущие заметки в этой серии включают: chapters and contributing authors, Splitting the Initial Payload, Загружаем скрипты без блокировки, Стыкуем асинхронные скрипты и Размещаем внутренние скрипты.
Девятое правило из High Performance Web Sites гласит, что уменьшение числа DNS-Запросов делает загрузку страницы быстрее. Это абсолютно верно, но в некоторых ситуациях бывает выгодно распределить пакет ресурсов, загружаемых с одного домена, между несколькими. Я называю этот метод балансировкой домена (domain sharding). Эта техника позволяет увеличить число параллельных потоков при загрузке страницы, уменьшая общее время загрузки.
Для того чтобы определить, стоит ли вообще использовать балансировку загрузки по доменам, нужно определить, загружаются ли статические ресурсы с основного домена. Следующая диаграмма загрузки (для Yahoo.com) показывает, что использование основного домена замедляет загрузку страницы. Эта диаграмма загрузки построена для страницы, загружаемой через Internet Explorer 7, который позволяет устанавливать только 2 параллельных соединения к хосту. Вертикальные линии указывают на то, что в любой момент времени активны только 2 параллельные загрузки. Если мы посмотрим на URL этих ресурсов, то почти все они загружаются с l.yimg.com
. Распределив эти ресурсы по нескольким доменам, например, l1.yimg.com
и l2.yimg.com
, что позволит увеличить скорость загрузки практически вдвое.
Большинство сайтов из 10 наиболее популярных в США распределяю ресурсы между доменами. YouTube использует i1.ytimg.com
, i2.ytimg.com
, i3.ytimg.com
и i4.ytimg.com
. Live Search использует ts1.images.live.com
, ts2.images.live.com
, ts3.images.live.com
и ts4.images.live.com
. Оба этих сайта балансируют загрузку при помощи только 4 доменов. Какое же оптимальное их количество? Yahoo! опубликовало исследование, согласно которому стоит использовать не менее 2, но не более 4 доменов. После 4 доменов производительность начинает существенно падать (это можно заметить, например, на страницах вКонтакте, где все картинки распределены по своим серверам, и при запросе страницы, например, профиля хосты изображений друзей очень сильно варьируются).
Далеко не у всех браузеров есть ограничение на 2 параллельные загрузки на хост. Opera 9+ и Safari 3+ осуществляют по 4 загрузки на хост, Internet Explorer 8, Firefox 3, и Chrome 1+ — по 6. Распределение статики хотя бы двум доменам позволит существенно улучшить производительность во всех браузерах и будет хорошим компромиссным решением.