В чем преимущество размещения статических ресурсов в отдельном домене?


24

Я заметил, что многие сайты размещают свои ресурсы в отдельном домене от основного сайта, например, StackExchange с использованием sstatic.net, Barnes & Noble с использованием imagesbn.com и т. Д.

Я понимаю, что есть преимущество в размещении ваших статических ресурсов на отдельном хосте, возможно, с помощью эффективного веб-сервера со статическими файлами, такого как nginx, что освобождает главный сервер для работы с динамическим контентом. Аналогичным образом, аутсорсинг в общий CDN, такой как облачный фронт Akamai, логичен.

В чем преимущество использования отдельного домена в противном случае? Почему sstatic.net вместо static.stackexchange.com?

Обновление : в нескольких ответах отсутствует основной вопрос. Я понимаю, что выгодно разделение между несколькими хостами - параллельные загрузки, более тонкий веб-сервер и т. Д. Но что более неуловимо, так это несколько доменов . Почему sstatic.net, а не static.stackexchange.com в качестве хоста для общих ресурсов? Пока только один ответ на этот вопрос.

Ответы:


22

На многих сайтах установлено довольно много файлов cookie, и они предназначены для поддержки какого-либо состояния.

Поместив статические (не сохраняющие состояние) ресурсы в совершенно другой домен, вы можете уменьшить размер http-запросов. В некоторых случаях файлов cookie так много, что один http-запрос требует передачи двух TCP-пакетов. Таким образом, наличие отдельного домена является одним из способов уменьшить количество пакетов для запроса различных частей страницы.

Другие методы с той же целью объединяют множество изображений в один спрайт и объединяют весь Javascript в один файл.


23

Помимо использования CDN, использование отдельных доменов для статических данных также означает:

  1. Вы можете использовать легкий веб-сервер, который не должен загружать все модули / расширения, которые ваш динамический контент-сервер должен загружать при каждом отдельном запросе. Отсутствие необходимости сканировать каждый каталог в пути URI для чтения файлов .htaccess также увеличивает количество одновременных запросов, которые может обрабатывать сервер.

  2. Добавление дополнительного субдомена означает, что вы увеличиваете количество параллельных загрузок, которые может выполнять браузер.

  3. При правильной настройке (например, ваш сайт размещен www.example.comвместо example.com), вы также можете использовать субдомен без файлов cookie, что сокращает трафик и время туда и обратно.

Единственным недостатком является то, что если вы используете сеансы SSL, вам нужен подписанный сертификат и отдельный статический IP-адрес для дополнительных доменов. Но преимущества перевешивают это незначительное неудобство в большинстве случаев.

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

Извините, я неправильно понял ваш вопрос. Если вы спрашиваете, почему некоторые люди используют отдельные SLD, это будет ответ в скобках # 3. Это также объясняется на sstatic.net :

Если ваш домен www.example.org, вы можете разместить статические компоненты на static.example.org. Однако если вы уже установили файлы cookie на домене верхнего уровня example.org, а не на www.example.org, то все запросы к static.example.org будут включать эти файлы cookie. В этом случае вы можете купить совершенно новый домен, разместить там свои статические компоненты и сохранить этот домен без файлов cookie. Yahoo! использует yimg.com, YouTube использует ytimg.com, Amazon использует images-amazon.com и так далее.

Но воплощение также упоминает хороший момент об использовании отдельного универсального SLD вместо субдомена существующего SLD, когда вы управляете большой сетью сайтов, которые совместно используют определенные ресурсы.

И наконец, как отмечает Нильс Басьес, одна из причин, по которой исключаются файлы cookie, заключается в минимизации количества пакетов, используемых для выполнения запроса. Я думаю, что в рекомендациях YSlow говорится, что в большинстве сетей максимальный размер пакета составляет 1500 байт, поэтому сохранение его в пределах 1500 байт уменьшит издержки TCP. Это также демонстрирует еще одно преимущество использования sstatic.netвместо static.webmasters.stackexchange.com.


Зачем вам нужен отдельный IP?
Михалис Багос

2
Поскольку шифрование традиционно применяется перед отправкой доменного имени. SNI , который облегчает это, еще не поддерживается повсеместно - вы бы исключили IE на XP.
Phihag

@Mihalis: просто чтобы добавить комментарий Phihag, вы также исключите Windows Mobile 6.5 и старше, Android 2.x и старше, Blackberry Browser, Safari на XP ... Полный список поддерживаемых / неподдерживаемых программ можно найти здесь : en.wikipedia.org/wiki/Server_Name_Indication#No_support
Lèse majesté

3
Я не спрашиваю о том, почему использовать несколько поддоменов - это имеет смысл для меня. Я спрашиваю об отдельных полных доменах. Почему sstatic.net, а не static.stackexchange.com?
Майкл Экстранд

5

Лез Мажесте рассмотрел основные моменты, но для дальнейшего расширения я бы добавил, что наличие единого домена для всех различных сайтов Stack Exchange означает, что кто-то, просматривающий их, будет загружать статический контент, такой как JavaScripts, только один раз. Например, перейдя в Superuser, пользователь будет использовать кэшированный контент, поскольку он находится в том же месте.

Об этом есть еще несколько полезных сведений о Yahoo и Google .


5

Основной причиной являются куки. То, что Нильс предложил в своем ответе, является лишь незначительным следствием, а не реальной причиной. Без файлов cookie размер запроса меньше, поэтому он экономит некоторую полосу пропускания.

Однако реальная разница заключается в кеше браузера. Поскольку содержимое является статическим (то есть не изменяется), браузеры могут кэшировать его на локальном жестком диске и избегать загрузки файла из Интернета каждый раз. Вместо всего файла веб-сервер просто отправляет ответ 304, что означает, что содержимое не изменилось.

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

Это основная причина, так как это сокращает время загрузки и значительно уменьшает пропускную способность.


3

Старые браузеры ограничены двумя параллельными загрузками для каждого имени хоста.

Разделение элементов веб-страницы на несколько доменов называется разделением домена . Это позволяет параллельно загружать больше ресурсов, сокращая общее время загрузки страницы.

Оптимальное количество доменов для разделения - 2-4. После 4 доменов время отклика ухудшается .

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.