Arquivos locais vs. CDN

13

Se o tempo de carregamento de um site é uma preocupação, geralmente é melhor usar ao fazer referência a um arquivo JavaScript ou CSS? Usar uma CDN seria melhor ou isso adicionaria mais solicitações HTTP?

Omar A.
fonte

Respostas:

11

A CDN deve ser usada para todos os arquivos estáticos (.css / .js / images).

Às vezes, no entanto, os arquivos javascript ou css podem ter um aspecto dinâmico, como o de incluir uma string de usuário exclusiva ou algo desse tipo. Nessa situação, o servidor CDN precisaria entrar em contato com o servidor de origem em todas as solicitações que fossem contrárias ao objetivo.

Se seu CSS e Javascript são estáticos para todos os usuários, usar uma CDN é o caminho certo a seguir. Isso não causaria solicitações HTTP extras, pois carregaria apenas os arquivos css e js da CDN em vez de seu próprio servidor da web (a menos que você esteja usando código embutido). Portanto, em vez de um navegador de usuários carregar essas solicitações do servidor, elas serão carregadas pela CDN, não há solicitações adicionais que você está apenas alterando para onde enviar essas solicitações (novamente, desde que você não esteja usando o código embutido).

Outros benefícios do uso de uma CDN seria que o servidor da CDN provavelmente estaria localizado mais perto dos usuários finais do que sua origem, o que beneficiará o tempo de carregamento. É provável que os servidores CDN também sejam configurados para veicular conteúdo estático muito mais rapidamente que o servidor de origem, fornecendo especificamente conteúdo estático ao servidor da Web.

Analog
fonte
2
Se a CDN não estiver mais próxima e não usar edns-client-subnet, isso não melhorará o desempenho. Este não é um "outro benefício", estar mais próximo do cliente, possivelmente fornecer alguma proteção do DOS / otimização de conteúdo (embora você não os mencione) são os únicos benefícios.
symcbean
O principal benefício do uso de uma CDN é o fato de que provavelmente o usuário já visitou um site que usava a mesma CDN e o navegador já o armazenou em cache, portanto, quando o usuário chega ao seu site, o navegador não envia nenhuma solicitação.
Offir Pe'er
3

Geralmente, é preferível usar um CDN versus hospedagem tradicional na Web para fornecer arquivos estáticos, como CSS, JS e imagens. Isso ocorre porque, quando os arquivos são armazenados em cache nos servidores de borda da CDN, os visitantes do site receberão conteúdo estático do ponto de presença mais próximo (PoP), em vez do servidor de origem.

Na maioria dos casos, isso reduz a distância entre o cliente e o servidor e, portanto, ajuda a melhorar o tempo de carregamento sem adicionar solicitações HTTP adicionais. Isso também ajuda em outras áreas, como aumentar a redundância, retirar a carga da origem etc.

CodyA
fonte
2

Use uma CDN se precisar de uma CDN. Se seu usuário é global e está espalhado por uma grande área, ou você possui muito conteúdo que não deseja armazenar em seu próprio servidor, é quando uma CDN é útil. Globalmente, ele pode acelerar o acesso ao seu conteúdo se o servidor estiver mais próximo do usuário. Se você tiver muitos GB ou Terabytes de dados estáticos e uma carga pesada para acessar esse conteúdo, uma CDN poderá ajudá-lo.

Entretanto, sites pequenos ou locais com pouca carga raramente precisam dessas coisas e uma CDN pode adicionar apenas mais uma complicação à sua configuração, operação e fluxo de trabalho, como problemas de cache.

Muitas vezes, vejo pessoas usando uma CDN porque elas lêem que deveriam usar uma e nenhuma outra razão.

Roubar
fonte
Obrigado por apontar que nem sempre é necessário e, de fato, adiciona complicações desnecessárias. No meu caso, eu estou usando um cms baseado em laravel com um combinador de ativos de back-end e armazena em cache arquivos compactados, configurando um S3 cdn, gulp e vc em alguns arquivos js, era uma perda de tempo. Eu prefiro focar DB cache e código adequado para a velocidade
Raja Khoury
1

O uso de uma CDN pode ser um fardo e um benefício para um site, tudo dependendo de como ele foi implementado.

Pontos positivos

  1. Conteúdo estático armazenado mais perto do usuário final (tempos de carregamento mais rápidos)
  2. Subdomínios adicionais ( cdn1.example.com, cdn2.example.cometc), isso ajuda no limite inerente nos navegadores, onde limitam os downloads de arquivos a dois arquivos simultâneos do mesmo nome de domínio totalmente qualificado a qualquer momento. Em outras palavras, usando este exemplo, você acessaria o HTML www.example.come, ao mesmo tempo, baixaria 2 arquivos cdn1.example.com, 2 arquivos cdn2.example.come 2 arquivos dos cdn3.example.comtrês domínios da CDN acessando o serviço e a origem da CDN.
Chris Rutherfurd
fonte
Você pode dar uma referência de onde vêm os "2 arquivos simultâneos por domínio"? É certamente por navegador. Também com o advento do HTTP / 2, o sharding de domínio se tornou um problema discutível.
Patrick Mevzek 02/07/19
0

Hospedar em uma CDN tem muitas desvantagens:

  1. Privacidade. Sempre que você acessa um site que hospeda scripts / folhas de estilo / fontes em uma CDN, a CDN sabe sobre você visitando o site.
  2. Tempo offline. Nas últimas semanas, o cloudflare etc teve algumas horas, onde o tempo de carregamento foi muito lento ou até offline por alguns minutos. Na melhor das hipóteses, seu site parece feio, quando isso acontece, na pior das hipóteses, é completamente inutilizável em uma época em que seus concorrentes também têm problemas e você pode obter clientes deles se o site estiver online e o deles não.
  3. Segurança. A CDN pode estar comprometida (isso aconteceu antes). Na melhor das hipóteses, seu servidor espalha malware, então, na pior das hipóteses, seus dados agora são públicos ou desaparecem.

Comparado a isso, as vantagens são insignificantes:

  1. Menos dados para carregar: falamos de cerca de 100kb de scripts por site. 1 imagem em baixa qualidade é responsável por mais do que isso. Se você não tiver um site que esteja no limite com 5.000.000 de visitas por minuto, isso não fará diferença. E se você provavelmente deve configurar um ambiente de servidor melhor com balanceador de carga e mais servidores da Web, porque o uso de CDNs não resolverá seus problemas.
  2. Tempos de carregamento mais rápidos, porque os servidores CDN estão mais próximos do cliente: em alguns momentos, onde a latência da UE para os EUA é de cerca de 100ms para quase todas as conexões, o css é carregado em 50ms ou 100ms.

Não há motivo para usar uma CDN em um ambiente de produção.

cari
fonte