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-age ou s-maxage não correspondem aos valores esperados, como um padrão de max-age=300 ou max-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

  1. Verifique o cabeçalho atual Cache-Control de um navegador ou com curl. Execute curl -I https://example.com/path/to/page.html e inspecione o valor Cache-Control, como public, max-age=60, s-maxage=7200 ou max-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.
  2. 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.
  3. 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:

  1. 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 -I novamente para confirmar se os cabeçalhos refletem o TTL atualizado.
  2. 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.
  3. 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=N desejado. Execute curl -I no URL do Dynamic Media, como is/image/..., e verifique se o cabeçalho Cache-Control aparece.
  4. Limpe ou ignore o cache para validar o resultado. Depois que a configuração for alterada, execute curl -I novamente 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.

Leitura relacionada

recommendation-more-help
experience-cloud-kcs-help-kbarticles