O AWS CloudFront deve aumentar o tempo de carregamento de arquivos acessados ​​com pouca frequência?

9

Eu sou novo nas CDNs e estou experimentando o CloudFront. Eu configurei tudo e tudo parece estar funcionando bem. Posso criar uma imagem estática em uma página e acessá-la através da minha distribuição do CloudFront. Estou usando uma origem personalizada (ou seja, não um bucket s3).

Estou preocupado que eu possa estar pior do ponto de vista do desempenho. Eu tenho uma página de teste que carrega as mesmas 20 ou mais imagens com e sem a CDN. Olhando para o painel de rede no Firebug, na primeira vez que carrego esta página, as imagens carregadas diretamente do servidor de origem são muito mais rápidas. Em carregamentos de páginas subseqüentes, os benefícios da CDN se tornam óbvios - após 3-5 atualizações, a CDN está se saindo melhor que o servidor de origem.

Para que eu possa ver que em uma página popular em nosso site que está sendo acessada o tempo todo, isso será um benefício. E devo esperar um benefício, porque estou em Seattle (ao virar da esquina da Amazon) e meu servidor está na CA.

O problema é que, se eu deixar a página por alguns minutos e recarregar, tudo voltará à estaca zero, com o CloudFront sendo pior que o servidor de origem. Isso é esperado? As coisas saem do "cache" da CDN tão rapidamente?

É possível que algo na minha configuração esteja prejudicando o desempenho? Ou é a realidade de que a CDN será apenas positiva para o conteúdo que está sendo acessado atualmente a cada segundo em média?

(publicação cruzada no fórum da AWS porque eu fui estragada para sempre pelos tempos de resposta da SO)

ATUALIZAR:

Há duas boas respostas abaixo que valem a pena procurar se você tiver dúvidas sobre o desempenho do CloudFront. Recentemente, eu encontrei uma explicação para o meu problema específico não foi mencionado. Eu havia deixado o TTL aos 5 minutos como um descuido. Como também estou usando uma origem personalizada, há uma ida e volta adicional ao servidor de nomes autoritativo para resolver isso no domínio real do Amazon CloudFront. Agora que a configuração TTL está de volta às 12 horas, parece que as cargas longas acontecem mais raramente.

Greg
fonte
Sim, é possível que o CloudFront seja mais lento do que apenas ir diretamente para um servidor rápido, porque o CloudFront é um dos CDNs mais lentos do mercado, devido à maneira como a Amazon o implementou com várias camadas de resolução de DNS etc. Execute alguns benchmarks da differnet locais em todo o mundo e decida se é adequado para você ou não - use o webpagetest.org para testar.
precisa

Respostas:

5

O Cloudfront define um cabeçalho nas respostas como "X-Cache: Hit from cloudfront" nas respostas. Presumivelmente, ele dirá "Miss" se o seu arquivo não estava no cache do nó ao qual você foi direcionado.

É possível que seus arquivos não sejam populares o suficiente, então eles são ejetados do cache do CloudFront por conteúdo mais popular, mesmo depois de 24 horas. Também é possível que a sobrecarga de E / S ou alguma outra circunstância dentro de um nó do CloudFront específico torne o acesso lento. Cloudfront é muito barato em comparação com Akamai ou LimeLight. O pior desempenho e os níveis de serviço garantidos são dois dos motivos para usar os players mais caros.

Eu faria um teste, colocando apenas um arquivo popular em cloudfront na produção e, em seguida, usava testes periódicos para verificar se o CloudFront está indicando hits (também registra o tempo total de transação).

rmalayter
fonte
Atualizei a pergunta com outra possível explicação para o problema de desempenho que vi: deixei a configuração TTL na configuração baixa de 5 minutos, mas, ao voltar para 12 horas, acho que não estou vendo isso. problemas de desempenho ocasionais com a mesma frequência.
19711 Greg
7

É possível. No entanto, um objetivo de uma CDN é a escalabilidade. Você pode esperar que a CDN execute o mesmo se fizer 100 visitas de uma só vez ou 1 milhão de visitas de uma só vez.

No que diz respeito à sua configuração, não há nada que eu possa saber com as informações fornecidas, mas acho que o ponto acima é o que torna uma CDN tão valiosa. Se você estiver criando um site que não recebe muito tráfego, pode ser melhor sem a CDN. No entanto, a CDN fornecerá uma carga mais leve no servidor da Web se você receber muito tráfego porque está transmitindo a veiculação da mídia para outro servidor. Um último ponto, uma boa CDN (e a Amazon é) utilizará sua extensa rede para veicular seu conteúdo a partir do local mais próximo ao solicitante. Em muitos casos, eles podem veicular o conteúdo do ISP do solicitante, o que significa tempos de carregamento MUITO rápidos.

Espero que ajude.

Jesse Bunch
fonte
Obrigado Jesse - muito útil. O ponto em relação à escala é bem aceito. E temos tráfego suficiente para fazer uma grande diferença. Eu ainda adoraria conhecer a política de cache. Eu encontrei uma quantidade enorme de informações sobre como configurar a CDN e muito pouco sobre suas características. Estou me perguntando, por exemplo, se devo excluir (da CDN) o conteúdo antigo que é acessado com pouca frequência.
Greg
Greg - Não vejo argumento para excluir o conteúdo, exceto talvez por razões financeiras. No entanto, você pode controlar os cabeçalhos de cache do seu objeto na Amazon. Você pode tentar olhar para este: stackoverflow.com/questions/269840/...
Jesse Bunch
Isso permitiria especificar cabeçalhos expirados no futuro, como faria com a mídia normal de qualquer site.
Jesse Bunch
Obrigado novamente. Esse link de controle de cache não é relevante para minha situação porque estou usando um servidor de origem personalizado, não o s3. Mas o principal se aplica e eu tenho um futuro distante expirando o conjunto de cabeçalhos. Aliás, os documentos da Amazon dizem que o conteúdo permanece no cache por 24 horas, mas minhas experiências indicam algo diferente.
Greg
1

Eu entendi errado? O controle de cache não gerencia por quanto tempo as coisas permanecem nos locais de borda antes de os locais de borda serem recarregados do S3? Então, certamente, eles são relevantes para a sua situação, se você usa o S3 ou sua própria origem? Não?

As Perguntas frequentes da Amazon dizem: "P. Por quanto tempo o Amazon CloudFront manterá meus arquivos nos locais de borda? Por padrão, se nenhum cabeçalho de controle de cache estiver definido, cada local de borda procurará uma versão atualizada do seu arquivo sempre que receber uma solicitação além de 24 horas após a hora anterior, verificou a origem para alterações nesse arquivo, chamado de "período de validade". Você pode definir esse período de expiração em apenas 1 hora ou o tempo que desejar, definindo os cabeçalhos de controle de cache nos arquivos da sua origem.O Amazon CloudFront usa esses cabeçalhos de controle de cache para determinar com que frequência ele deve verificar as origem para uma versão atualizada desse arquivo. Se os arquivos não forem alterados com frequência, é recomendável definir um longo período de validade e implementar um sistema de controle de versão para gerenciar as atualizações nos arquivos. "

[Presumo que a última frase signifique "azar se você a definir para 50 anos e depois quiser alterar o arquivo".]

Não é o ponto principal do uso de uma CDN que hospeda conteúdo estático? Nesse caso, ajudaria a usar TTL consideravelmente mais longo do que um dia? Para praticamente tudo (todas as imagens e CSS), eu uso o Cache-Control = "max-age = 604800, public, must-revalidate" (ou seja, 1 semana). Na minha experiência, os arquivos definitivamente levam até uma semana para serem alterados se eu carregar novas versões no S3.

Espero que isto ajude. [BTW: No seu ponto mais geral, eu também me pergunto se uma CDN ajuda na performance tanto quanto você acha que vai. Estou prestes a mudar meu site inteiro (CDN incluído) para um servidor dedicado super-rápido e fazer alguns testes para descobrir.]

Chris W
fonte
Você está certo de que o controle de cache influencia por quanto tempo o conteúdo é mantido na borda. O TTL é uma questão separada. TTL controla o armazenamento em cache do endereço IP atribuído ao nome de domínio. Portanto, independentemente de o arquivo estático ser armazenado em cache na borda ou não, na primeira vez em que um servidor vê a URL do arquivo, ele precisa encontrar o endereço IP desse domínio. Com o TTL de um dia, é provável que um servidor próximo tenha essas informações no cache DNS. Com um TTL 5 minuto, isso é muito menos provável e uma ida e volta completa ao meu servidor de origem é necessário (não para o arquivo, mas para resolver o URL) ..
Greg
Ah ok obrigado. Eu estava confuso DNS TTL e cache-control :)
Chris W
1

Os motivos para usar a CDN é se você está esperando

  • Conteúdo estático - atualizações pouco frequentes ou controladas
  • Visto em todo o mundo
  • Acessado frequentemente

Nosso site é acessado com pouca frequência como o seu caso, mas temos uma configuração de serviço de monitoramento que solicita nosso site em todo o mundo. Portanto, mantém os caches da CDN quentes. Eu também gostaria de compartilhar nosso caso, que é simples e demonstra a capacidade da CDN.

Além disso, esperamos uma cobrança mensal de 2,2 $ em vez de 7 $ para o servidor godaddy (que não pode lidar com surtos)

Tempos médios de carregamento da página

Distribuição média do tempo de carregamento da página

JehandadK
fonte