Quando as solicitações/respostas HTTP são armazenadas em cache?

O AEM as a Cloud Service CDN armazena em cache somente respostas HTTP e todos os critérios a seguir devem ser atendidos:

  • O status da resposta HTTP é 2xx ou 3xx
  • O método de solicitação HTTP é GET ou HEAD
  • Pelo menos um dos seguintes cabeçalhos de resposta HTTP está presente: Cache-Control, Surrogate-Control ou Expires
  • A resposta HTTP pode ser qualquer tipo de conteúdo, incluindo HTML, JSON, CSS, JS e arquivos binários.

Por padrão, as respostas HTTP não armazenadas em cache pelo AEM Dispatcher têm automaticamente todos os cabeçalhos de cache de resposta HTTP removidos para evitar o armazenamento em cache no CDN. Este comportamento pode ser cuidadosamente substituído usando mod_headers com a diretiva Header always set ... quando necessário.

O que é armazenado em cache?

O AEM as a Cloud Service CDN armazena em cache o seguinte:

  • Corpo da resposta HTTP
  • Cabeçalhos de resposta HTTP

Normalmente, uma solicitação/resposta HTTP para um único URL é armazenada em cache como um único objeto. No entanto, a CDN pode lidar com o armazenamento em cache de vários objetos para uma única URL, quando o cabeçalho Vary é definido na resposta HTTP. Evite especificar Vary em cabeçalhos cujos valores não tenham um conjunto de valores rigidamente controlado, pois isso pode resultar em muitos erros de cache, reduzindo a taxa de acertos do cache. Para dar suporte ao armazenamento em cache de solicitações variáveis no AEM Dispatcher, revise a documentação de armazenamento em cache de variantes.

Vida útil do cache

O CDN de Publicação do AEM é baseado em TTL (time-to-live), o que significa que a vida do cache é determinada pelos cabeçalhos de resposta HTTP Cache-Control, Surrogate-Control ou Expires. Se os cabeçalhos de cache de resposta HTTP não forem definidos pelo projeto e os critérios de qualificação forem atendidos, o Adobe definirá uma vida de cache padrão de 10 minutos (600 segundos).

Veja como os cabeçalhos de cache influenciam a vida útil do cache CDN:

  • O cabeçalho de resposta HTTP Cache-Control instrui o navegador da Web e a CDN sobre quanto tempo armazenar a resposta em cache. O valor é em segundos. Por exemplo, Cache-Control: max-age=3600 instrui o navegador da Web a armazenar a resposta em cache por uma hora. Esse valor é ignorado pela CDN se o cabeçalho de resposta HTTP Surrogate-Control também estiver presente.
  • O cabeçalho de resposta HTTP Surrogate-Control instrui a CDN do AEM sobre quanto tempo armazenar a resposta em cache. O valor é em segundos. Por exemplo, Surrogate-Control: max-age=3600 instrui a CDN a armazenar a resposta em cache por uma hora.
  • O cabeçalho de resposta HTTP Expires instrui o CDN (e o navegador da Web) do AEM sobre por quanto tempo a resposta em cache é válida. O valor é uma data. Por exemplo, Expires: Sat, 16 Sept 2023 09:00:00 EST instrui o navegador da Web a armazenar a resposta em cache até a data e a hora especificadas.

Use o Cache-Control para controlar a vida útil do cache quando ele for o mesmo para o navegador e para o CDN. Use Surrogate-Control quando o navegador da Web deve armazenar a resposta em cache por um tempo diferente do CDN.