Problemas de configuração do controle de cache e do armazenamento em cache do CDN/Dispatcher no AEM
O AEM Dispatcher e os CDNs downstream como o Fastly e o Akamai retornam um comportamento inesperado de armazenamento em cache: valores de Cache-Control que não correspondem ao TTL pretendido, apenas a primeira variação de conteúdo dinâmico sendo armazenado em cache, URLs do Dynamic Media sem cabeçalho de Cache-Control e respostas obsoletas que persistem após a invalidação. Nenhum erro aparece nos logs — o problema é exibido nos cabeçalhos de resposta HTTP ou no comportamento inconsistente do cache. A causa é uma configuração de Controle de cache incorreta ou ausente ou a lógica da chave de cache na camada do Dispatcher ou do CDN, já que os CDNs respeitam os cabeçalhos upstream e não armazenam em cache de forma previsível quando esses cabeçalhos não são definidos. Configurar cabeçalhos explícitos de controle de cache no Dispatcher, ajustar a chave de cache para variações dinâmicas e definir conjuntos de regras para ativos do Dynamic Media restaura o armazenamento em cache correto e previsível.
Descrição description
Ambientes:
- Adobe Experience Manager as a Cloud Service
- Adobe Experience Manager Managed Services
- Adobe Experience Manager no local
- AEM Dispatcher e Apache HTTP Server
- Camadas CDN, como Fastly e Akamai
- Dynamic Media (Scene7)
Problema/sintomas:
- Os valores de Cache-Control como
max-ageous-maxagenão correspondem aos valores esperados, como um padrão demax-age=300oumax-age=60, s-maxage=7200. - O CDN armazena em cache somente a primeira variação de conteúdo renderizado dinamicamente.
- Os URLs do Dynamic Media (Scene7) não retornam um cabeçalho de controle de cache.
- O Dispatcher ou a CDN continuam a fornecer respostas em cache mesmo após a invalidação esperada.
- Não é possível ignorar a CDN ou o Dispatcher para exibir a saída de origem.
Causa raiz:
A causa raiz é uma configuração incorreta ou ausente dos cabeçalhos de Controle de Cache ou da lógica da chave de cache na camada do Dispatcher ou do CDN. CDNs como Fastly e Akamai respeitam os cabeçalhos de Controle de Cache de upstream e os padrões do Dispatcher influenciam o que os caches CDN, de modo que, quando os cabeçalhos não são configurados explicitamente, os caches CDN respondem inesperadamente. O conteúdo dinâmico é armazenado em cache quando a chave do cache não varia entre os atributos específicos do usuário. O Dynamic Media e o Scene7 exigem configuração de conjunto de regras para gerar cabeçalhos de controle de cache.
Como confirmar
- Verifique o cabeçalho atual Cache-Control de um navegador ou com curl. Execute
curl -I https://example.com/path/to/page.htmle inspecione o valor Cache-Control, comopublic, max-age=60, s-maxage=7200oumax-age=300. Confirme se ele corresponde ao que você espera na produção. Se o cabeçalho estiver totalmente ausente, aplique a configuração explícita na resolução. - Verifique se o CDN armazena em cache apenas por URL. Solicite o mesmo URL duas vezes, esperando uma saída dinâmica diferente. Se ambas as respostas forem idênticas, o CDN ou o Dispatcher armazenarão em cache somente a primeira variação.
- Ignore os caches para ver a saída de origem. Anexe um parâmetro de consulta à URL, como
https://example.com/page.html?q=123, para ignorar o CDN e o Dispatcher. A resposta retorna a saída do publicador de origem, que pode ser comparada com a resposta em cache.
Resolução resolution
Siga estas etapas para resolver o problema:
- Definir valores de Cache-Control na configuração do Dispatcher. Atualize as regras em que os cabeçalhos de Controle de Cache são definidos. No AEM as a Cloud Service, edite o código Dispatcher no repositório do projeto e implante por meio do Cloud Manager. No Managed Services e no local, atualize a configuração do Apache e do Dispatcher no servidor ou por meio do pipeline do Cloud Manager. Após a implantação, execute
curl -Inovamente para confirmar se os cabeçalhos refletem o TTL atualizado. - Configurar o armazenamento em cache de variações dinâmicas, quando apropriado. Se o conteúdo precisar variar de acordo com o parâmetro, inclua os parâmetros de consulta necessários ou cookies na chave do cache, configurada nas regras do Dispatcher. Envie várias solicitações com parâmetros diferentes e confirme se o CDN retorna respostas distintas.
- Definir cabeçalhos de controle de cache para ativos do Dynamic Media e do Scene7. Use os conjuntos de regras do Dynamic Media e do Scene7 para definir o cabeçalho Cache-Control com o valor
max-age=Ndesejado. Executecurl -Ino URL do Dynamic Media, comois/image/..., e verifique se o cabeçalho Cache-Control aparece. - Limpe ou ignore o cache para validar o resultado. Depois que a configuração for alterada, execute
curl -Inovamente e confirme se o cabeçalho Cache-Control corresponde ao TTL desejado. Quando os cabeçalhos de depuração do CDN estiverem disponíveis, verifique se o CDN retorna o TTL atualizado e confirme as variações dinâmicas solicitando conteúdo para vários usuários ou parâmetros.
Se o problema persistir
Entre em contato com o Suporte da Adobe com a saída curl -I das URLs afetadas, os trechos de configuração do Dispatcher que controlam o Cache-Control, os detalhes da camada do CDN, como Akamai ou Fastly, e uma descrição do comportamento esperado versus real.