As regras de expiração do cache determinam por quanto tempo os recursos permanecem armazenados nos pontos de presença (POPs) da CDN. Esse mecanismo permite equilibrar a atualização do conteúdo, o desempenho de acesso e os custos de requisição à origem. Este tópico explica o funcionamento das regras de cache, como configurá-las e validá-las, além de oferecer diretrizes para resolver problemas e adotar melhores práticas em ambientes de produção.
Funcionamento
Ao receber uma requisição em um ponto de presença (POP) da CDN, o sistema avalia se deve entregar uma cópia em cache ou buscar o conteúdo mais recente no servidor de origem. As etapas abaixo são processadas por ordem de prioridade, em que números menores indicam maior prioridade.
Diretivas de não armazenamento em cache da origem — A CDN não armazena um recurso em cache quando o servidor de origem responde com
Pragma: no-cache,Cache-Control: no-cache,Cache-Control: no-storeouCache-Control: max-age=0. Para forçar o armazenamento desses recursos, selecione Ignore Origin No-Cache Header ao configurar a regra de expiração do cache.Regras de cache definidas no console — As configurações realizadas no console da CDN têm precedência, exceto quando a origem envia explicitamente uma diretiva de não armazenamento conforme descrito na etapa 1. Caso múltiplas regras do console correspondam à mesma requisição, aquela com maior peso prevalece. Se os pesos forem idênticos, a regra criada primeiro é aplicada. Após uma requisição corresponder a uma regra de cache, nenhuma outra avaliação ocorre.
Cabeçalhos de resposta da origem — A CDN respeita os cabeçalhos de resposta HTTP do servidor de origem caso a requisição não corresponda a nenhuma regra do console da CDN, ou se a regra correspondente tiver a opção Honor Origin TTL ativada. A prioridade dos cabeçalhos, do maior para o menor, é:
Cache-Control>Expires>Last-Modified>ETag.Política padrão de não armazenamento — Quando a requisição não corresponde a nenhuma regra de cache no console da CDN e o servidor de origem não retorna cabeçalhos de cache como
Cache-Control, a CDN aplica automaticamente uma política de não armazenamento em cache.A CDN DCDN aplica políticas de cache apenas para requisições cujo servidor de origem retorne códigos de status 200, 203, 206, 300, 301, 308 ou 410. Para definir o tempo de expiração de códigos como 404, utilize a página Cache Settings > Status Code TTL.
A tabela a seguir detalha a lógica de prioridade quando várias regras de cache do console correspondem a uma mesma requisição:
|
Cenário |
Lógica de prioridade |
Exemplo |
|
Pesos diferentes |
Prevalece a regra com o maior peso (1-99). |
A Regra A (diretório |
|
Mesmo peso |
A regra criada anteriormente tem precedência. |
Você configura uma regra de diretório ( |
A tabela abaixo explica como cada cabeçalho de resposta da origem é tratado:
|
Cabeçalho de resposta |
Tratamento pela CDN |
Observações e exemplos |
|
Cache-Control |
Utiliza primeiramente |
Exemplo: |
|
Expires |
Define o momento exato de expiração. Este cabeçalho só é considerado na ausência de |
Exemplo: |
|
Last-Modified |
O cabeçalho |
Exemplo: |
|
ETag |
Um |
Exemplo: |
Lógica de correspondência de regras de cache
As regras de expiração do cache da CDN oferecem dois tipos de configuração com comportamentos distintos de correspondência:
Directory: Corresponde por prefixo de caminho. Por exemplo, ao configurar
/static/, todos os recursos dentro desse diretório serão abrangidos (como/static/image/1.jpge/static/css/style.css). Definir/abrange todos os caminhos. O caminho do diretório deve começar com barra (/), e cada regra aceita apenas um diretório.-
File Extension: Corresponde exatamente pela extensão do arquivo. Insira as extensões sem pontos e separe-as por vírgulas (por exemplo,
jpg,css,js). São aceitos apenas caracteres alfanuméricos, sem restrições quanto aos tipos específicos. É possível configurar os seguintes grupos:Extensões comuns de recursos estáticos:
jpg,png,gif,css,js,htmlExtensões de arquivos de fonte:
ttf,otf,woff,woff2,eotExtensões de páginas dinâmicas:
php,aspx,jspQualquer outra extensão alfanumérica
Observe os pontos importantes sobre a correspondência de regras de cache:
Quando diversas regras de cache correspondem à mesma requisição (por exemplo, uma regra de diretório e outra de extensão), prevalece aquela com maior Weight. Em caso de empate no peso, a regra criada primeiro vence. Consulte Funcionamento para mais detalhes.
Ao associar uma condição de regra (configurada no Mecanismo de Regras) a uma regra de cache, múltiplas condições seguem a lógica AND; a requisição precisa atender a todas elas para haver correspondência.
Caso defina uma regra geral de não armazenamento para todas as extensões dinâmicas (como
aspx), certifique-se de que isso não afete recursos estáticos que devam permanecer em cache. Para armazenar arquivos de fonte, crie uma regra dedicada com extensões comottf,otf,woff,woff2,eot.
Procedimento
O tipo de negócio escolhido durante a criação de um domínio acelerado (como Imagens e Arquivos Pequenos, Download de Arquivos Grandes ou Streaming de Vídeo/Áudio sob Demanda) não define durações fixas de cache para extensões ou caminhos específicos. O comportamento real de cache depende exclusivamente das regras configuradas no console. Após criar o domínio, configure as regras de cache de acordo com seus tipos de recurso e frequência de atualização.
Console (recomendado)
No console do Alibaba Cloud CDN, acesse a página Domain Names e clique em Manage ao lado do domínio desejado.
Na página Cache > Cache Expiration, clique em Create Rule para definir uma nova regra de cache. A tabela abaixo descreve os parâmetros disponíveis.
|
Parâmetro |
Descrição |
Padrão/exemplo |
|
Type |
Defina o escopo da regra por Diretório ou Extensão de Arquivo. Directory: estabelece uma regra uniforme para todos os recursos sob um determinado caminho. File Extension: aplica uma regra uniforme para arquivos de um tipo específico. |
Directory, File Extension |
|
Object |
Preencha o valor conforme o tipo selecionado. Directory: deve iniciar com barra ( |
|
|
Expire In |
Tempo de retenção dos recursos nos POPs. O limite máximo é de três anos. Recursos estáticos com pouca atualização (imagens, instaladores): defina 1 mês ou mais. Recursos estáticos atualizados frequentemente (arquivos JS e CSS): use períodos menores, entre 1 e 7 dias. Conteúdo dinâmico (páginas PHP e JSP): configure 0 segundos (sem cache). |
0 segundos a 3 anos |
|
Honor Origin TTL |
Desativado por padrão. Quando ativado, a política de cache do servidor de origem assume a precedência e substitui esta regra. |
Off |
|
Ignore Origin No-Cache Header |
Ao ativar essa opção, a CDN ignora as seguintes diretivas de não armazenamento vindas da origem: |
Off |
|
Follow POP Cache Policy |
Se habilitado, a CDN informa sua política de cache efetiva ao cliente via cabeçalho de resposta, como |
Off |
|
Force Revalidation |
Esta configuração só surte efeito quando o tempo de expiração é 0 segundos. Desativado (padrão, equivalente à política |
Off |
|
Weight |
Define a prioridade da regra. Valores válidos: 1 a 99. Quanto maior o valor, maior a prioridade. Recomendação: atribua pesos altos para caminhos ou extensões específicas e pesos baixos para o diretório raiz ( |
1 a 99 |
|
Rule Condition |
Permite refinar o escopo da regra com base em parâmetros da requisição, como cabeçalhos e parâmetros de URL. Não utilizado por padrão. Para configurar condições, utilize o Mecanismo de Regras. Quando referenciadas, as condições são avaliadas segundo a prioridade delas mesmas, e não pela ordem de criação da regra de cache. |
Do not use |
Para entender como cada tipo de regra faz a correspondência de requisições, consulte Lógica de correspondência de regras de cache.
API
Utilize a operação de API BatchSetCdnDomainConfig para configurar vários domínios em lote. Para saber mais sobre a definição de parâmetros de outros recursos, veja Domain name configuration functions.
Regras de cache novas ou modificadas afetam somente os recursos armazenados após a alteração. Recursos já presentes em cache continuam seguindo a política anterior até expirarem naturalmente.
Aplicar alterações de regra imediatamente
Para que novas regras tenham efeito imediato em toda a rede, limpe manualmente o cache existente. Se você alterou uma regra, remova o cache atual usando o recurso Purge and prefetch resources. Caso tenha adicionado uma nova regra, pré-busque o recurso através do recurso prefetch resource.
Validação
Após concluir a configuração, utilize o comando curl ou as ferramentas de desenvolvedor do navegador para inspecionar os cabeçalhos de resposta HTTP de um recurso e confirmar se o cache opera conforme o esperado. Para detalhes sobre quando uma mudança de regra entra em vigor, consulte Aplicar alterações de regra imediatamente.
Método 1: Usar o comando curl
Execute o comando abaixo no seu terminal para testar a configuração.
curl -I "https://your.domain.com/path/to/file.jpg"
Nos cabeçalhos de resposta, verifique o campo X-Cache: HIT indica que a requisição foi atendida pelo cache da CDN, enquanto MISS sinaliza falha no cache, acionando uma busca na origem. Para interpretar cada cabeçalho, leia Interpretar principais cabeçalhos de resposta.
Método 2: Usar ferramentas de desenvolvedor do navegador
Abra as ferramentas de desenvolvedor do seu navegador (F12) e vá até a aba Network. Acesse a URL do recurso, selecione a requisição correspondente e examine o cabeçalho X-Cache em Response Headers para verificar se o conteúdo veio do cache da CDN.
Interpretar principais cabeçalhos de resposta
X-Cache
Mostra se a requisição atingiu o cache da CDN.
HIT: A requisição encontrou o conteúdo no cache.MISS: O conteúdo não estava no cache e precisou ser buscado no servidor de origem.
Cache-Control
Ao habilitar Follow POP Cache Policy, a CDN devolve ao cliente a política de cache vigente no POP, por exemplo, max-age=3600.
X-Swift-SaveTime
Registra o momento em que o recurso entrou pela primeira vez no POP da CDN na camada L1 acessada diretamente pelo cliente.
O valor segue o formato de hora GMT. Exemplo:
Sat, 19 Apr 2025 08:58:31 GMT.
Ali-Swift-Global-Savetime
Indica quando o recurso ingressou inicialmente em algum POP da CDN. Dependendo da arquitetura de cache do site, pode tratar-se de um POP L2 ou outra camada intermediária.
O valor é apresentado como timestamp Unix. Por exemplo,
1745053111equivale a2025-04-19 16:58:31.
X-Swift-CacheTime
Representa a duração de cache configurada para o recurso no POP da CDN, medida em segundos. Trata-se de um limite superior, não de uma garantia absoluta. Ali-Swift-Global-Savetime usa timestamp Unix, enquanto X-Swift-SaveTime utiliza horário GMT.
X-Swift-CacheTime=Ali-Swift-Global-Savetime+ expiração de cache definida na CDN -X-Swift-SaveTime.-
O valor de
X-Swift-CacheTimepode divergir da expiração configurada. Veja as situações possíveis:Corresponde exatamente ao tempo configurado, como 3.600 segundos.
É ligeiramente inferior ao configurado. Por exemplo, a expiração é de 300 segundos, mas
X-Swift-CacheTimemarca 295 segundos. Isso acontece devido à alta latência entre o POP L1 e o POP L2 durante a busca do recurso, ou por falta de sincronização de relógio entre essas camadas.Apresenta valor negativo porque a expiração foi alterada e, no momento do acesso do cliente, o cache no POP L1 já havia expirado, embora o do POP L2 ainda estivesse válido. Suponha que a expiração mudou de 3.600 para 300 segundos. Se o cliente acessar o recurso novamente 600 segundos depois do primeiro acesso, a resposta trará
X-Swift-CacheTime: -300. Limpe o cache para garantir que o novo tempo de expiração seja respeitado.
Recursos pouco acessados em um POP podem ser removidos antecipadamente para dar espaço a conteúdos mais populares. Nesses casos, a duração real do cache fica abaixo do valor configurado.
Melhores práticas
Adote nomes de arquivo versionados (recomendado) — Sempre que atualizar um recurso estático como
style.css, renomeie-o incluindo uma versão ou hash, por exemplo,style-v2.cssoustyle-a1b2c3d.css, e ajuste a referência no HTML. Essa abordagem garante que os usuários recebam o conteúdo atualizado instantaneamente, eliminando a necessidade de limpar manualmente o cache da CDN. É a forma mais segura de gerenciar atualizações de conteúdo em cache.Otimize o uso do cache do navegador — Ative a opção Follow POP Cache Policy para diminuir requisições repetidas à CDN, acelerar o carregamento das páginas e economizar tráfego da CDN.
Evite tempos de cache excessivamente curtos — Durações muito breves forçam a CDN a buscar conteúdo na origem constantemente, anulando os benefícios da aceleração e elevando tanto o tráfego quanto os custos do servidor de origem.
Tenha cautela com caches muito longos — Prazos extensos podem impedir que os clientes recebam atualizações de conteúdo rapidamente. Para informações que mudam com frequência, lembre-se de limpar o cache ou utilizar nomes de arquivo versionados.
Cenários de jogos e arquivos pequenos — Recursos pequenos típicos da indústria de jogos (arquivos de configuração, pacotes de assets) que sofrem atualizações esporádicas (semanais ou quinzenais) devem ter expiração de cache de 15 dias ou alinhada ao ciclo real de atualização. Esse equilíbrio preserva a performance de aceleração sem comprometer a entrega de novidades. Caches curtos demais geram buscas frequentes na origem e reduzem a eficiência; caches longos demais podem entregar conteúdo obsoleto aos jogadores. (Recomendado) Utilize o recurso purge and prefetch para renovar proativamente o cache sempre que houver mudanças no conteúdo.
Arquivos robots.txt e sitemap.xml — Esses arquivos influenciam diretamente a indexação por mecanismos de busca. Configure a duração de cache deles separadamente para evitar que regras amplas de extensão os mantenham em cache por tempo excessivo, atrasando atualizações críticas. (Recomendado) Para atingir apenas esses dois arquivos, escolha Directory como tipo, insira o caminho exato (como
/robots.txt) no campo Object e defina um peso alto para sobrescrever regras gerais de extensão. Se preferir configurar por extensão, estabeleça um cache entre 1 hora e 1 dia paratxt,xml. Lembre-se de que regras de extensão afetam todos os arquivos daquele tipo, não apenas robots.txt e sitemap.xml. Sitemaps com atualizações frequentes devem ter cache de no máximo 1 hora.
Solução de problemas
Para orientações sobre como resolver falhas na aplicação do cache, misses de cache, baixa taxa de acerto ou conteúdo desatualizado, consulte Troubleshoot cache issues.
Apêndice: Mecanismos de controle de cache HTTP
Esta seção apresenta conceitos fundamentais do protocolo. Para entender o comportamento correspondente nos POPs, veja Funcionamento. O protocolo HTTP emprega três categorias de cabeçalhos para gerenciar o cache:
-
Validação por tempo de expiração
Cliente e servidor acordam um prazo de validade quando o recurso é solicitado. Dentro desse período, a cópia em cache permanece válida. Passado esse tempo, ela se torna obsoleta.
No HTTP, os cabeçalhos abaixo são os mais usados para controlar a expiração do cache:
Cabeçalho
Versão do protocolo
Descrição
Exemplo
Tipo
Pragma
HTTP/1.0
Determina se o conteúdo pode ser armazenado. Geralmente assume o valor no-cache, impedindo o cache. Seu uso visa principalmente compatibilidade com servidores restritos ao HTTP/1.0.
Pragma: no-cacheRequisição/Resposta
Expires
HTTP/1.0
O cabeçalho Expires define a data e hora exatas em que o conteúdo em cache perde a validade. Valores inválidos, como 0, indicam que o recurso já expirou.
Expires: Wed, 21 Oct 2022 07:28:00 GMTResposta
Cache-Control
HTTP/1.1
Oferece controle flexível do cache por meio de diversas diretivas. É o principal cabeçalho utilizado por clientes modernos, como navegadores, para essa finalidade.
Três exemplos que impedem o armazenamento:
Cache-Control: no-cache;Cache-Control: no-store;Cache-Control: max-age=0. Exemplo de validade de 1 hora:Cache-Control: max-age=3600.Requisição/Resposta
-
Validação por tag de recurso
O servidor envia uma etiqueta identificadora (como ETag) na resposta inicial. Em requisições subsequentes para o mesmo recurso, o cliente devolve essa tag para validação. Se nada mudou, o servidor responde com o código HTTP 304, permitindo o uso da cópia local. Caso contrário, transmite o conteúdo atualizado.
Os cabeçalhos HTTP a seguir são comumente empregados para validar versões de cache:
Cabeçalho
Versão do protocolo
Descrição
Exemplo
Tipo
Last-Modified
HTTP/1.0
Informa a data da última modificação do recurso.
Last-Modified: Wed, 21 Oct 2015 07:28:00 GMTResposta
ETag
HTTP/1.1
Fornece um identificador exclusivo para uma versão específica do recurso. A comparação de ETags revela se houve alterações. Sem mudanças, o servidor de origem evita enviar uma resposta completa.
ETag: "33a64df551425fcc55e4d42a148795d9f25f89d4"Resposta
-
Negociação de conteúdo
Softwares de cache utilizam uma chave para indexar objetos armazenados em disco. No HTTP/1.0, a URL do recurso servia como chave. Contudo, uma mesma URL pode hospedar diferentes representações de um recurso. Para diferenciá-las, são necessárias informações adicionais do cliente, como os cabeçalhos Accept-Language e Accept-Charset. Visando suportar a negociação de conteúdo, o HTTP/1.1 introduziu o cabeçalho Vary na mensagem de resposta, listando quais cabeçalhos de requisição são necessários para tal negociação.
A negociação de conteúdo geralmente recorre ao cabeçalho HTTP Vary para distinguir cópias em cache distintas, possibilitando que clientes variados recebam versões adequadas ao solicitarem o mesmo recurso:
|
Cabeçalho |
Versão do protocolo |
Descrição |
Exemplo |
Tipo |
|
Vary |
HTTP/1.1 |
Exemplos comuns: O servidor define |
|
Resposta |