O que é taxa de acertos do cache?
A taxa de acertos de cache é a proporção de solicitações que um cache atende com uma resposta armazenada, em vez de encaminhá-las à origem. Geralmente, ela é calculada por solicitação e, às vezes, por byte entregue. As ferramentas diferem quanto à inclusão de solicitações que não podem ser armazenadas em cache e de respostas revalidadas, então duas taxas informadas só são comparáveis quando suas definições coincidem.
Como funciona a taxa de acertos de cache
Um acerto significa que o cache atendeu à solicitação com uma resposta armazenada, sem encaminhá-la. A RFC 9211 padroniza como um cache informa isso em cada resposta no cabeçalho Cache-Status: hit quando a solicitação não foi encaminhada, ou fwd com um motivo como uri-miss, vary-miss, stale ou bypass quando foi encaminhada. A taxa é calculada a partir da contagem desses resultados em um período e conjunto de solicitações escolhidos. Três fatores a determinam principalmente: por quanto tempo as respostas permanecem dentro do prazo de validade, por quantas chaves de cache distintas o mesmo conteúdo se distribui e se um objeto é solicitado com frequência suficiente em uma localidade de cache para ainda estar armazenado quando a próxima solicitação chegar. As localidades de borda preenchem seus caches separadamente, então a primeira solicitação de um objeto em cada localidade resulta em uma ausência no cache local; uma camada superior compartilhada pode atendê-la sem contatar a origem.
Informações essenciais
- As solicitações que não podem ser armazenadas em cache entram no denominador? Depende da ferramenta. A métrica
Cache hit ratedo Amazon CloudFront conta apenas solicitações que podem ser armazenadas em cache e exclui POST, PUT e erros, enquanto o relatório de estatísticas de cache mostra acertos, ausências no cache e erros como porcentagens de todas as solicitações dos usuários. Um artigo de engenharia da Fastly sobre o Varnish usa a definição mais restrita, acertos divididos pela soma de acertos e ausências no cache, e chama de cobertura do cache a parcela de solicitações que podem ser armazenadas em cache. Confira o denominador antes de comparar dois painéis ou definir uma meta. - Uma resposta revalidada é um acerto? Segundo a RFC 9211, não: uma resposta armazenada expirada cuja solicitação precisou ser encaminhada para validação é informada como
fwd=stale, mesmo quando a origem responde 304 e o corpo armazenado é reutilizado. Os provedores adotam critérios diferentes. O Cache Analytics da Cloudflare conta solicitações revalidadas como atendidas pela origem na visualização Requests, mas como atendidas pela Cloudflare na visualização Data Transfer. Já o gráfico de estatísticas de cache do CloudFront não inclui acertos de atualização, termo usado pelo serviço para solicitações de objetos expirados que ainda estão no cache de borda. - Solicitações ou bytes? Eles respondem a perguntas diferentes. Uma taxa baseada em solicitações atribui o mesmo peso a cada solicitação, seja ela de poucos bytes ou de muitos megabytes, e acompanha com que frequência um usuário espera pela origem. Uma taxa baseada em bytes é a parcela dos bytes entregues aos clientes que vieram de acertos de cache. Um site cujos arquivos pequenos geram acertos, enquanto os arquivos de mídia grandes resultam em ausências no cache, pode apresentar uma taxa alta por solicitações e baixa por bytes. Ambas as taxas são proporções, não quantidades: a maioria dos provedores de hospedagem cobra o tráfego de saída pelos dados que seus servidores enviam, e essa quantidade pode crescer com o tráfego enquanto a taxa permanece estável. Para decisões de custo, analise o valor baseado em bytes junto com a quantidade de bytes obtidos da origem. A visualização Data Transfer da Cloudflare conta dados transferidos em vez de solicitações; o relatório de estatísticas de cache do CloudFront fornece
BytesFromMisses, que a AWS considera uma boa aproximação dos bytes obtidos da origem, mas que exclui objetos expirados que ainda estavam no cache de borda. - Por que a taxa está baixa se as regras de cache parecem corretas? Depois de descartar os prazos de validade do cache como causa, confira primeiro a fragmentação das chaves de cache. Quando o CloudFront armazena conteúdo em cache com base nos parâmetros da string de consulta, ele armazena
?a=1&b=2e?b=2&a=1como objetos separados. O mesmo vale para diferenças entre maiúsculas e minúsculas nos parâmetros e para cada valor distinto de um cookie ou cabeçalho, comoUser-Agent, usado na configuração do cache. Além disso, uma resposta só pode ser reutilizada enquanto ainda estiver armazenada, e apenas se estiver dentro do prazo de validade, tiver sido revalidada com sucesso junto à origem ou puder ser servida mesmo expirada, por exemplo, conformestale-while-revalidateoustale-if-error. Os caches removem objetos solicitados com pouca frequência, e cada localidade de borda preenche seu próprio cache. Prazos de validade mais longos e uma camada superior de cache compartilhada, como CloudFront Origin Shield ou Cloudflare Tiered Cache, reduzem as solicitações à origem.
Quando a taxa de acertos de cache é importante
Acompanhe a taxa de acertos quando cada ausência de resultado no cache gera latência na origem, carga na origem ou processamento sob demanda. Uma queda na taxa pode indicar prazos curtos de validade do cache ou uma chave de cache fragmentada por strings de consulta, cookies ou cabeçalhos de requisição. Se a ferramenta contabiliza todas as requisições, um valor baixo é esperado para um tráfego que, em sua maior parte, não pode ser armazenado em cache; se ela contabiliza apenas requisições que podem ser armazenadas em cache, esse mesmo tráfego ainda pode apresentar um valor alto.
Como a Transloadit ajuda com a taxa de acertos de cache
No Smart CDN da Transloadit, uma ausência no cache exige mais processamento do que em uma CDN que apenas armazena arquivos existentes: ela leva à importação do original e à execução do seu Template, enquanto um acerto repete apenas a etapa de entrega a partir da borda. A documentação do Robot /tlcdn/deliver descreve a entrega em cache como uma forma de reduzir a latência e o volume de codificação, portanto a taxa de acertos das suas URLs do Smart CDN afeta tanto a latência quanto o uso. Para URLs assinadas, o prazo de validade efetivo do cache é limitado pelo prazo de validade restante da assinatura, então um exp mais curto reduz a reutilização.
As páginas vinculadas aqui não definem um relatório de taxa de acertos nem informam quais solicitações ele contaria. A visão geral do Smart CDN sugere conferir os cabeçalhos de resposta do cache ao depurar; se você calcular uma taxa a partir deles, registre sua própria definição de acerto.
Fontes
- RFC 9211: o campo de cabeçalho de resposta HTTP Cache-Status
- RFC 9111: cache HTTP (quando uma resposta armazenada pode ser reutilizada)
- Amazon CloudFront: aumentar a proporção de solicitações atendidas pelo cache
- Amazon CloudFront: métricas de distribuição, incluindo a taxa de acertos de cache
- Amazon CloudFront: relatórios de estatísticas de cache
- Cloudflare: Cache Analytics (Requests em comparação com Data Transfer)
- Cloudflare: desempenho do cache por status de cache
- Fastly: causas comuns de uma baixa taxa de acertos de cache
- Lista de usuários do Squid: taxa de acertos por solicitações em comparação com taxa de acertos por bytes
- Boas práticas do Google Cloud CDN: chaves de cache e remoção de objetos do cache