Como faço para reduzir a latência das respostas lentas do CloudFront?
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 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
Conteúdo relevante
- feita há 13 diaslg...
- Resposta aceitafeita há 11 diaslg...
- feita há 13 diaslg...
- feita há um mêslg...
- AWS OFICIALAtualizada há 3 anos
- AWS OFICIALAtualizada há 6 meses
- AWS OFICIALAtualizada há 5 meses
- AWS OFICIALAtualizada há um ano