Como limpar o cache da CDN
Saiba como limpar ou remover a resposta HTTP em cache do CDN da AEM as a Cloud Service. Usando o recurso de autoatendimento chamado Limpar Token de API, você pode limpar o cache de um recurso específico, de um grupo de recursos e de todo o cache.
Neste tutorial, você aprenderá a configurar e usar o Token da API de Limpeza para limpar o cache CDN do site de amostra AEM WKND usando o recurso de autoatendimento.
Invalidação de cache versus limpeza explícita
Há duas maneiras de remover os recursos em cache do CDN:
-
Invalidação de cache: É o processo de remover os recursos em cache da CDN com base nos cabeçalhos de cache como
Cache-Control
,Surrogate-Control
ouExpires
. O valor de atributomax-age
do cabeçalho de cache é usado para determinar o tempo de vida do cache dos recursos, também conhecido como TTL (Time To Live) de cache. Quando o tempo de vida do cache expira, os recursos em cache são removidos automaticamente do cache CDN. -
Limpeza explícita: é o processo de remover manualmente os recursos em cache do cache do CDN antes que o TTL expire. A limpeza explícita é útil quando você deseja remover os recursos em cache imediatamente. No entanto, aumenta o tráfego para o servidor de origem.
Quando os recursos em cache são removidos do cache CDN, a próxima solicitação do mesmo recurso busca a versão mais recente do servidor de origem.
Configurar o token da API de limpeza
Vamos saber como configurar o token da API de limpeza para limpar o cache do CDN.
Configurar a regra CDN
O token da API de limpeza é criado ao configurar a regra CDN no código do projeto AEM.
-
Abra o arquivo
cdn.yaml
na pastaconfig
principal do seu projeto AEM. Por exemplo, o arquivo cdn.yaml🔗 do projeto WKND. -
Adicionar a seguinte regra CDN ao arquivo
cdn.yaml
:
kind: "CDN"
version: "1"
metadata:
envTypes: ["dev", "stage", "prod"]
data:
authentication: # The main authentication configuration
authenticators: # The list of authenticators
- name: purge-auth # The name of the authenticator
type: purge # The type of the authenticator, must be purge
purgeKey1: ${{CDN_PURGEKEY_081324}} # The first purge key, must be referenced by the Cloud Manager secret-type environment variable name ${{CDN_EDGEKEY_073124}}
purgeKey2: ${{CDN_PURGEKEY_111324}} # The second purge key, must be referenced by the Cloud Manager secret-type environment variable name ${{CDN_EDGEKEY_111324}}. It is used for the rotation of secrets without any interruptions.
rules: # The list of authentication rules
- name: purge-auth-rule # The name of the rule
when: { reqProperty: tier, equals: "publish" } # The condition when the rule should be applied
action: # The action to be taken when the rule is applied
type: authenticate # The type of the action, must be authenticate
authenticator: purge-auth # The name of the authenticator to be used, must match the name from the above authenticators list
Na regra acima, purgeKey1
e purgeKey2
são adicionados desde o início para suportar a rotação de segredos sem interrupções. No entanto, você pode começar com apenas purgeKey1
e adicionar purgeKey2
mais tarde ao girar os segredos.
- Salve, confirme e envie as alterações para o repositório upstream de Adobe.
Criar variável de ambiente do Cloud Manager
Em seguida, crie as variáveis de ambiente do Cloud Manager para armazenar o valor do token da API de limpeza.
-
Faça logon no Cloud Manager em my.cloudmanager.adobe.com e selecione sua organização e programa.
-
Na seção Ambientes, clique nas reticências (…) ao lado do ambiente desejado e selecione Exibir Detalhes.
-
Em seguida, selecione a guia Configuração e clique no botão Adicionar configuração.
-
Na caixa de diálogo Configuração do Ambiente, insira os seguintes detalhes:
- Nome: insira o nome da variável de ambiente. Deve corresponder ao valor
purgeKey1
oupurgeKey2
do arquivocdn.yaml
. - Valor: insira o valor do token da API de limpeza.
- Serviço Aplicado: Selecione a opção Todos.
- Tipo: selecione a opção Segredo.
- Clique no botão Adicionar.
- Nome: insira o nome da variável de ambiente. Deve corresponder ao valor
-
Repita as etapas acima para criar a segunda variável de ambiente para o valor
purgeKey2
. -
Clique em Salvar para salvar e aplicar as alterações.
Implantar a regra CDN
Por fim, implante a regra CDN configurada no ambiente do AEM as a Cloud Service usando o pipeline do Cloud Manager.
-
Na Cloud Manager, navegue até a seção Pipelines.
-
Crie um novo pipeline ou selecione o pipeline existente que implanta apenas os arquivos Config. Para obter etapas detalhadas, consulte Criar um pipeline de configuração.
-
Clique no botão Executar para implantar a regra CDN.
Usar o token da API de limpeza
Para limpar o cache do CDN, chame o URL de domínio específico do serviço AEM com o token de API de limpeza. A sintaxe para limpar o cache é a seguinte:
PURGE <URL> HTTP/1.1
Host: <AEM_SERVICE_SPECIFIC_DOMAIN>
X-AEM-Purge-Key: <PURGE_API_TOKEN>
X-AEM-Purge: <PURGE_TYPE>
Surrogate-Key: <SURROGATE_KEY>
Em que:
-
PURGE
<URL>
: o métodoPURGE
é seguido pelo caminho de URL do recurso que você deseja limpar. -
Host:
<AEM_SERVICE_SPECIFIC_DOMAIN>
: especifica o domínio do serviço AEM. -
X-AEM-Purge-Key:
<PURGE_API_TOKEN>
: um cabeçalho personalizado que contém o valor do Token da API de Limpeza. -
X-AEM-Purge:
<PURGE_TYPE>
: um cabeçalho personalizado que especifica o tipo de operação de limpeza. O valor pode serhard
,soft
ouall
. A tabela a seguir descreve cada tipo de expurgação:table 0-row-2 1-row-2 2-row-2 3-row-2 1-align-center 2-align-center 4-align-center 5-align-center 7-align-center 8-align-center 10-align-center 11-align-center Tipo de Expurgação Descrição rígido (padrão) Remove o recurso em cache imediatamente. Evite-o, pois isso aumenta o tráfego para o servidor de origem. suave Marca o recurso em cache como obsoleto e busca a versão mais recente do servidor de origem. todas Remove todos os recursos em cache do cache do CDN. -
Chave-Substituta:
<SURROGATE_KEY>
: (Opcional) Um cabeçalho personalizado que especifica as chaves substitutas (separadas por espaço) dos grupos de recursos a serem removidos. A chave substituta é usada para agrupar os recursos e deve ser definida no cabeçalho de resposta do recurso.
X-AEM-Purge: hard
é usado para fins de demonstração. Você pode substituí-lo por soft
ou all
de acordo com suas necessidades. Tenha cuidado ao usar o tipo de limpeza hard
, pois ele aumenta o tráfego para o servidor de origem.Limpar o cache de um recurso específico
Neste exemplo, o comando curl
limpa o cache do recurso /us/en.html
no site do WKND implantado em um ambiente do AEM as a Cloud Service.
curl -X PURGE "https://publish-p46652-e1315806.adobeaemcloud.com/us/en.html" \
-H "X-AEM-Purge-Key: 123456789" \
-H "X-AEM-Purge: hard"
Ao limpar com êxito, uma resposta 200 OK
é retornada com conteúdo JSON.
{ "status": "ok", "id": "1000098-1722961031-13237063" }
Limpar o cache para um grupo de recursos
Neste exemplo, o comando curl
limpa o cache do grupo de recursos com a chave substituta wknd-assets
. O cabeçalho de resposta Surrogate-Key
está definido em wknd.vhost
, por exemplo:
<VirtualHost *:80>
...
# Core Component Image Component: long-term caching (30 days) for immutable URLs, background refresh to avoid MISS
<LocationMatch "^/content/.*\.coreimg.*\.(?i:jpe?g|png|gif|svg)$">
Header set Cache-Control "max-age=2592000,stale-while-revalidate=43200,stale-if-error=43200,public,immutable" "expr=%{REQUEST_STATUS} < 400"
# Set Surrogate-Key header to group the cache of WKND assets, thus it can be flushed independtly
Header set Surrogate-Key "wknd-assets"
Header set Age 0
</LocationMatch>
...
</VirtualHost>
curl -X PURGE "https://publish-p46652-e1315806.adobeaemcloud.com" \
-H "Surrogate-Key: wknd-assets" \
-H "X-AEM-Purge-Key: 123456789" \
-H "X-AEM-Purge: hard"
Ao limpar com êxito, uma resposta 200 OK
é retornada com conteúdo JSON.
{ "wknd-assets": "10027-1723478994-2597809-1" }
Limpar todo o cache
Neste exemplo, usando o comando curl
, o cache inteiro é removido do site WKND de amostra implantado no ambiente do AEM as a Cloud Service.
curl -X PURGE "https://publish-p46652-e1315806.adobeaemcloud.com/" \
-H "X-AEM-Purge-Key: 123456789" \
-H "X-AEM-Purge: all"
Ao limpar com êxito, uma resposta 200 OK
é retornada com conteúdo JSON.
{"status":"ok"}
Verificar a limpeza do cache
Para verificar a limpeza do cache, acesse o URL do recurso no navegador da Web e revise os cabeçalhos de resposta. O valor do cabeçalho X-Cache
deve ser MISS
.