Qual é a vantagem de hospedar recursos estáticos em um domínio separado?

24

Percebo que muitos sites hospedam seus recursos em um domínio separado do site principal, por exemplo, StackExchange usando sstatic.net, Barnes & Noble usando imagesbn.com, etc.

Entendo que há benefícios em colocar seus recursos estáticos em um host separado, possivelmente com um servidor Web de arquivos estáticos eficiente como o nginx, liberando o servidor principal para se concentrar em servir conteúdo dinâmico. Da mesma forma, a terceirização para uma CDN compartilhada como a Akamai na nuvem é lógica.

Qual é o benefício de usar um domínio separado? Por que sstatic.net em vez de static.stackexchange.com?

Atualização : Várias respostas perdem a questão principal. Entendo que há vantagens em dividir entre vários hosts - downloads paralelos, servidor Web mais fino, etc. Mas o que é mais difícil de entender é por que vários domínios . Por que sstatic.net em vez de static.stackexchange.com como o host de recursos compartilhados? Até agora, apenas uma resposta abordou isso.

Michael Ekstrand
fonte

Respostas:

22

Muitos sites têm muitos cookies configurados, esses cookies têm o objetivo de oferecer suporte a algum tipo de estado.

Ao colocar os recursos estáticos (sem estado) em um domínio completamente diferente, você pode reduzir o tamanho das solicitações http. Em alguns casos, existem tantos cookies que uma única solicitação http requer que dois pacotes TCP sejam transmitidos. Portanto, ter um domínio separado é uma das maneiras de reduzir o número de pacotes para solicitar as várias partes de uma página.

Outros métodos com o mesmo objetivo são mesclar muitas imagens em um único sprite e mesclar todo o Javascript em um único arquivo.

Niels Basjes
fonte
23

Além do uso de CDNs, o uso de domínios separados para dados estáticos também significa:

  1. Você pode usar um servidor da web leve que não precise carregar todos os módulos / extensões que o servidor da web de conteúdo dinâmico precisa carregar em cada solicitação. Não ter que varrer cada diretório no caminho do URI para ler arquivos .htaccess também aumenta o número de solicitações simultâneas que o servidor pode manipular.

  2. Adicionar um subdomínio extra significa que você aumenta o número de downloads paralelos que o navegador pode executar.

  3. Se configurado corretamente (por exemplo, seu site está hospedado em www.example.comvez de example.com), você também pode aproveitar um subdomínio sem culinária, reduzindo o tempo de tráfego e de ida e volta.

A única desvantagem é que, se você estiver usando sessões SSL, precisará de um certificado assinado e de um IP estático separado para os domínios adicionais. Mas os benefícios superam esse pequeno inconveniente na maioria dos casos.

Editar:

Desculpe, eu interpretei mal sua pergunta. Se você está perguntando por que algumas pessoas usam SLDs separadas, isso seria respondido pelos parênteses no nº 3. Também é explicado no sstatic.net :

Se o seu domínio for www.example.org, você poderá hospedar seus componentes estáticos no static.example.org. No entanto, se você já definiu cookies no domínio de nível superior example.org, em oposição a www.example.org, todas as solicitações para static.example.org incluirão esses cookies. Nesse caso, você pode comprar um domínio totalmente novo, hospedar seus componentes estáticos e manter esse domínio sem cookies. Yahoo! usa yimg.com, YouTube usa ytimg.com, Amazon usa images-amazon.com e assim por diante.

Mas o encarnado também menciona um bom argumento sobre o uso de um SLD genérico separado, em vez de um subdomínio de um SLD existente, quando você está executando uma grande rede de sites que compartilham certos ativos.

Por fim, como aponta Niels Basjes, parte do motivo da eliminação de cookies é minimizar o número de pacotes usados ​​para executar uma solicitação. Eu acho que as diretrizes do YSlow afirmam que a maioria das redes tem um tamanho máximo de pacote de 1500 bytes, portanto, mantê-lo abaixo de 1500 bytes reduziria a sobrecarga do TCP. Isso também demonstra outra vantagem de usar em sstatic.netvez de static.webmasters.stackexchange.com.

Lèse majesté
fonte
Por que você precisaria de um ip separado?
Mihalis Bagos
2
Como a criptografia é tradicionalmente aplicada antes do envio do nome de domínio. O SNI , que alivia isso, ainda não é universalmente suportado - você excluiria o IE no XP.
Phihag
@Mihalis: Apenas para adicionar ao comentário de phihag, você também excluiria o Windows Mobile 6.5 e mais antigo, Android 2.xe mais antigo, Blackberry Browser, Safari no XP ... A lista completa de softwares suportados / não suportados pode ser encontrada aqui : en.wikipedia.org/wiki/Server_Name_Indication#No_support
Lèse majesté
3
Não estou perguntando por que usar vários subdomínios - isso faz sentido para mim. Estou perguntando sobre domínios completos separados. Por que sstatic.net em vez de static.stackexchange.com?
Michael Ekstrand
5

A Majestade abordou os pontos principais, mas para expandir ainda mais, eu acrescentaria que ter um único domínio para todos os vários sites do Stack Exchange significa que alguém que os navegue fará o download de conteúdo estático, como JavaScripts, apenas uma vez. Indo para Superusuário, por exemplo, um usuário usará o conteúdo em cache, pois é do mesmo local.

Há algumas informações mais úteis no Yahoo e no Google sobre isso.

John C
fonte
5

O principal motivo são os cookies. O que Niels sugeriu em sua resposta é apenas uma consequência menor, e não a verdadeira razão. Sem cookies, o tamanho da solicitação é menor, economizando largura de banda.

No entanto, a diferença real vem do cache do navegador. Como o conteúdo é estático (ou seja, não muda), os navegadores podem armazená-lo em cache no disco rígido local e evitar o carregamento do arquivo da Internet todas as vezes. Em vez do arquivo inteiro, o servidor da Web envia apenas uma resposta 304, o que significa que o conteúdo não foi alterado.

Quando o site usa cookies, os navegadores consideram que o conteúdo do arquivo pode ser diferente para diferentes usuários, para que eles não sejam armazenados em cache. A veiculação do arquivo do domínio sem cookies garante que o cache do navegador funcione corretamente.

Esse é o principal motivo, pois melhora o tempo de carregamento e reduz significativamente a largura de banda.

Milan Babuškov
fonte