Como faço para reduzir a latência das respostas lentas do CloudFront?

4 minuto de leitura
0

Vejo alta latência quando objetos ou imagens são baixados do Amazon CloudFront. As solicitações que recebem a resposta “X-Cache:Miss from cloudfront” demoram mais para carregar do que as solicitações que recebem a resposta “X-Cache:Hit from cloudfront”. Por que isso está acontecendo? Como posso corrigir isso?

Resolução

O CloudFront retorna “X-Cache:Miss from cloudfront” quando a solicitação é enviada para a origem. O CloudFront retorna “X-Cache:Hit from cloudfront” quando as solicitações são atendidas do local da borda mais próximo. As solicitações “Miss” podem demorar mais para carregar devido à etapa adicional de encaminhamento para a origem.

Para evitar a latência no encaminhamento de solicitações para a origem, verifique o seguinte para garantir que as solicitações possam ser atendidas a partir dos locais da borda do CloudFront:

  • Não encaminhe todos os cabeçalhos, todos os cookies ou todas as strings de consulta, pois isso faz com que o CloudFront passe pelas solicitações em vez de armazená-las em cache.
  • Verifique se você tem comportamentos de cache separados para conteúdo estático (por exemplo, arquivos CSS) que raramente mudam e para conteúdo dinâmico (por exemplo, arquivos JavaScript) que muda com frequência. Para conteúdo estático, evite o armazenamento em cache com base em cookies, strings de consulta ou cabeçalhos que não sejam necessários para que a origem forneça o conteúdo.
    Observação: para distribuições web, o CloudFront, por padrão, não considera cookies ao armazenar objetos em cache em locais da borda. Se sua origem retornar dois objetos e eles diferirem somente pelos valores no cabeçalho Set-Cookie, o CloudFront armazenará em cache somente uma versão do objeto.
  • Estenda o TTL mínimo, o TTL máximo ou o TTL padrão para padrões de caminho que precisam de mais tempo no cache antes que o CloudFront consulte a origem.
  • Se sua origem usa cabeçalhos Cache-Control, verifique se as diretivas são consistentes com o TTL mínimo, o TTL máximo ou o TTL padrão definidos na distribuição.
  • Se sua origem usa o cabeçalho Expires, verifique se o cabeçalho permite que o CloudFront armazene as respostas em cache conforme necessário.
  • Verifique se seu servidor de origem define valores válidos e precisos para os campos de cabeçalho Date e Last-Modified.
  • Limite o uso de invalidações em objetos. Execute invalidações somente quando necessário.
  • Verifique com que frequência os objetos são solicitados. Se um objeto não for solicitado com frequência, o CloudFront poderá removê-lo de um local da borda.

Se você está veiculando conteúdo dinâmico e espera respostas “X-Cache:Miss from cloudfront” para suas solicitações, considere o seguinte para reduzir a latência sem usar o armazenamento em cache:

  • Configure mais servidores de origem que estejam geograficamente mais próximos de seus solicitantes. Em seguida, configure um único registro DNS de roteamento baseado em latência (por exemplo, origin-latencybased-dnsrecord.example.com) que seja resolvido para esses servidores. No CloudFront, configure o nome DNS (por exemplo, origin-latencybased-dnsrecord.example.com) como a origem da sua distribuição. Essa configuração permite que o CloudFront busque o conteúdo do servidor de origem com a menor latência com base no local da borda em que a solicitação chega. Se você estiver usando o Amazon Route 53 como seu provedor de DNS, consulte Adicionar outra região ao seu roteamento baseado em latência no Amazon Route 53.
  • Aumente o tempo limite de inatividade do keep-alive para sua origem no CloudFront. Esse valor especifica por quanto tempo o CloudFront mantém uma conexão inativa com seu servidor de origem antes de fechar a conexão. O tempo limite padrão de inatividade de keep-alive é de cinco segundos, mas você pode definir um valor maior de até 60 segundos se seus servidores de origem o aceitarem. Se sua distribuição encaminhar solicitações de conteúdo dinâmico para a origem, aumentar o valor do tempo limite pode ajudar a reduzir a latência. Isso ocorre porque o CloudFront não precisa criar uma nova conexão para cada solicitação.
    Observação: uma origem pode ter vários endereços IP atribuídos a ela. Para usar conexões persistentes em vários endereços IP de origem, o CloudFront depende de uma maior taxa e frequência de solicitações. Isso ocorre porque as solicitações são roteadas em rodízio pelos endereços IP de origem, e as conexões são mantidas para cada endereço IP.

Informações relacionadas

Como aumentar a proporção de solicitações atendidas pelos caches de borda do CloudFront (taxa de acerto do cache)

Quais informações devo fornecer ao AWS Support para diagnosticar problemas de latência de distribuição na web do CloudFront?

Como gerenciar o tempo que o conteúdo permanece em um cache de borda (expiração)

Como adicionar cabeçalhos aos seus objetos usando o console Amazon S3

AWS OFICIAL
AWS OFICIALAtualizada há 2 anos