O que é armazenamento em cache na CDN?
O armazenamento em cache na CDN guarda cópias do conteúdo em localidades de borda distribuídas geograficamente. As solicitações podem ser atendidas perto de seus destinatários sem buscar repetidamente a mesma representação na origem.
Como funciona o armazenamento em cache na CDN
Uma CDN mapeia uma solicitação para uma localidade de borda e tenta reutilizar um objeto armazenado ali ou em uma camada de proteção intermediária. Na ausência de resultado no cache, a rede busca a representação em um cache anterior ou na origem e a armazena de acordo com as regras de validade e elegibilidade. Cada localidade preenche seu próprio cache, portanto um objeto já presente no cache de uma região ainda pode estar ausente no de outra, e um objeto pouco solicitado pode ser removido antes de expirar. Para mídia, segmentos e arquivos derivados imutáveis podem receber tempos de validade longos, enquanto manifestos e respostas que dependem de autorização geralmente precisam de um tratamento mais seletivo ou de tempos de validade mais curtos.
Informações essenciais
- O manifesto de um fluxo e seus segmentos de mídia precisam de tempos de validade diferentes. No HLS, uma playlist de mídia ao vivo é substituída por uma nova versão com pelo menos um novo segmento aproximadamente a cada duração-alvo (a RFC 8216 exige que isso ocorra não antes de metade e não depois de uma vez e meia essa duração), portanto um nó de borda que mantém a playlist por mais tempo oculta os novos segmentos dos players. Uma playlist marcada com
VODnão deve mudar e pode ser armazenada em cache como um arquivo estático. Os segmentos são obtidos separadamente da playlist, cada um com sua própria URL ou como um intervalo de bytes de um arquivo maior, e podem receber tempos de validade longos desde que o empacotador nunca altere os bytes associados a uma URL publicada, o que a própria especificação não garante. O rascunho da segunda edição do HLS da Apple recomenda, em seu perfil de servidor de baixa latência, armazenar respostas de playlists comuns em cache por metade da duração-alvo e usarCache-Controlpara informar o tempo de validade. - A chave de cache determina quais requisições compartilham uma entrada, e sua composição padrão varia conforme a CDN. A chave padrão do Amazon CloudFront é composta pelo nome de domínio da distribuição e pelo caminho da URL, sem strings de consulta, cabeçalhos ou cookies. A chave padrão da Cloudflare inclui o esquema, o host e o caminho com a string de consulta, além do cabeçalho
Originda requisição, de modo que a mesma URL acessada com e semOriginé armazenada separadamente. O Google Cloud CDN usa a URI completa da requisição para serviços de backend. As requisições compartilham uma entrada sempre que suas chaves são idênticas, algo que uma configuração padrão já pode causar: no padrão do CloudFront, URLs que diferem apenas na string de consulta recebem a mesma resposta em cache. Inclua na chave todos os valores da requisição que alteram a resposta e deixe os demais de fora, pois um componente que varia entre requisições sem alterar a resposta fragmenta o cache e reduz a taxa de acertos. - Para arquivos grandes, descubra como a CDN trata requisições
Range, pois isso altera a carga na origem e o comportamento ao navegar pela linha do tempo. O CloudFront encaminha à origem um intervalo que não tem em cache, possivelmente solicitando um intervalo maior, e armazena em cache a parte retornada; se a origem não oferece suporte a intervalos, o CloudFront recebe e armazena em cache o objeto inteiro. O Google Cloud CDN preenche seu cache com requisições próprias de intervalos de bytes depois de registrar que a origem oferece suporte a elas, o que exigeAccept-Ranges: bytes, um comprimento total conhecido, além deLast-Modifiede de umETagforte, e aplica um tamanho máximo muito menor para armazenamento em cache quando a origem não oferece esse suporte. A Fastly armazena objetos grandes em cache por partes somente quando o cache segmentado está habilitado. Portanto, uma origem que responde corretamente a requisições de intervalos é um pré-requisito para armazenar mídias grandes em cache por partes. - A elegibilidade de uma resposta para armazenamento em cache é determinada separadamente de seu prazo de validade, e a regra depende do provedor. Por padrão, a Cloudflare armazena em cache com base na extensão do arquivo e não armazena HTML ou JSON sem uma regra. O modo padrão do Google Cloud CDN armazena tipos de conteúdo estático em cache com base em
Content-Typee exige diretivas explícitas para HTML e JSON. Uma resposta que define um cookie não é armazenada em cache pelo Google Cloud CDN; a Cloudflare, dependendo da configuração, deixa a resposta fora do cache ou remove o cookie e a armazena em cache. Quando um acerto esperado no cache não acontece, consulte o status de cache informado pela CDN: na Cloudflare, o cabeçalho de respostaCF-Cache-StatusmostraMISSquando a resposta era elegível, mas não estava naquele cache,BYPASSquando a resposta da origem não podia ser armazenada em cache eDYNAMICquando a requisição nunca foi elegível.
Quando o armazenamento em cache na CDN é importante
Configure o armazenamento em cache na CDN para diminuir a latência da mídia, reduzir a carga na origem e absorver picos de tráfego. Chaves de cache ou regras de validade inadequadas podem entregar variantes incorretas ou deixar os usuários com conteúdo desatualizado.
Como a Transloadit ajuda com o armazenamento em cache na CDN
O Smart CDN da Transloadit coloca um cache de CDN à frente do processamento sob demanda. As requisições a uma URL tlcdn.com são atendidas pelo Robot /tlcdn/deliver, que armazena os resultados em cache e os entrega a partir de pontos de presença de borda. Quando não há resultado no cache, a Assembly do Template é executada; quando há um acerto no cache, o nó de borda responde sem executar nada. Os valores de Cache-Control enviados pelo Robot /file/serve definem por quanto tempo um resultado em cache permanece dentro do prazo de validade.
A primeira requisição a uma URL sem resultado em cache inclui o tempo de busca do arquivo de origem e de processamento. Os prazos de validade padrão atuais estão listados na página de /file/serve e não são repetidos aqui porque podem mudar.
Fontes
- RFC 9111: armazenamento em cache HTTP (chaves de cache, armazenamento de respostas parciais, validade)
- RFC 8216: HTTP Live Streaming, seção 6.2 (como os servidores atualizam playlists)
- HTTP Live Streaming, edição 2 (Internet-Draft 22), apêndice B.1: prazos de validade recomendados para o cache
- Amazon CloudFront: entender a chave de cache
- Amazon CloudFront: como o CloudFront processa requisições parciais de um objeto (requisições GET de intervalos)
- Cloudflare: chaves de cache
- Cloudflare: comportamento padrão do cache (elegibilidade, extensões de arquivo padrão, agrupamento de requisições)
- Cloudflare: respostas do cache (valores de CF-Cache-Status)
- Cloudflare: requisições HEAD e cabeçalhos Set-Cookie (quando uma resposta que define um cookie é armazenada em cache)
- Google Cloud CDN: visão geral do armazenamento em cache (conteúdo que pode ser armazenado em cache, chaves de cache, requisições de intervalos de bytes)
- Fastly: cache segmentado