Publicação no AEM

O serviço AEM Publish tem duas camadas principais de armazenamento em cache, o AEM as a Cloud Service AEM CDN e o Dispatcher. Opcionalmente, um CDN gerenciado pelo cliente pode ser colocado na frente do CDN do AEM as a Cloud Service. A CDN da AEM as a Cloud Service fornece entrega de borda de conteúdo, garantindo que as experiências sejam entregues com baixa latência a usuários em todo o mundo. O AEM Dispatcher fornece armazenamento em cache diretamente na frente do AEM Publish AEM e é usado para atenuar a carga desnecessária no próprio Publish.

Diagrama de visão geral do armazenamento em cache do AEM Publish

CDN

O armazenamento em cache do AEM as a Cloud Service CDN é controlado por cabeçalhos de cache de resposta HTTP e tem como objetivo armazenar em cache o conteúdo para otimizar um equilíbrio entre a atualização e o desempenho. A CDN fica entre o usuário final e o Dispatcher AEM e é usada para armazenar em cache o conteúdo o mais próximo possível do usuário final, garantindo uma experiência com desempenho.

CDN DO Publish DO AEM

Configurar como o conteúdo do CDN armazena em cache é limitado à configuração de cabeçalhos de cache em respostas HTTP. Normalmente, esses cabeçalhos de cache são definidos em configurações de vhost do AEM Dispatcher usando mod_headers, mas também podem ser definidos no código Java™ personalizado em execução no próprio Publish AEM.

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 cdn-cache-life

O CDN do Publish 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 como 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 o 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 AEM CDN (e o navegador da Web) 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.

Vida útil do cache padrão

Se uma resposta HTTP for qualificada para o armazenamento em cache do Dispatcher AEM por qualificadores acima, os valores a seguir serão os valores padrão, a menos que a configuração personalizada esteja presente.

Tipo de conteúdo
Vida útil do cache padrão da CDN
HTML/JSON/XML
5 minutos
Assets (imagens, vídeos, documentos e assim por diante)
10 minutos
Consultas persistentes (JSON)
2 horas
Bibliotecas de clientes (JS/CSS)
30 dias
Outros
Não armazenado em cache

Como personalizar regras de cache

Configurar como o conteúdo do cache do CDN é limitado a definir cabeçalhos de cache em respostas HTTP. Normalmente, esses cabeçalhos de cache são definidos em configurações AEM Dispatcher vhost usando mod_headers, mas também podem ser definidos no código Java™ personalizado em execução no próprio Publish AEM.

AEM Dispatcher

AEM Publish AEM Dispatcher

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

As respostas HTTP para solicitações HTTP correspondentes são armazenadas em cache quando todos os critérios a seguir são atendidos:

  • O método de solicitação HTTP é GET ou HEAD

    • HEAD As solicitações HTTP armazenam em cache apenas os cabeçalhos de resposta HTTP. Eles não têm corpos de resposta.
  • O status da resposta HTTP é 200

  • A resposta HTTP NÃO é para um arquivo binário.

  • O caminho da URL da solicitação HTTP termina com uma extensão, por exemplo: .html, .json, .css, .js, etc.

  • As solicitações HTTP não contêm autorização e não são autenticadas pelo AEM.

  • A solicitação HTTP não contém parâmetros de consulta.

    • No entanto, a configuração de Parâmetros de consulta ignorados permite que solicitações HTTP com os parâmetros de consulta ignorados sejam armazenadas em cache/servidas do cache.
  • O caminho da solicitação HTTP corresponde a uma regra de permissão Dispatcher e não corresponde a uma regra de negação.

  • A resposta HTTP não tem nenhum dos seguintes cabeçalhos de resposta HTTP definidos pelo AEM Publish:

    • no-cache
    • no-store
    • must-revalidate

O que é armazenado em cache?

O AEM Dispatcher armazena em cache o seguinte:

Vida útil do cache

O AEM Dispatcher armazena em cache as respostas HTTP usando as seguintes abordagens:

Vida útil do cache padrão

Se uma resposta HTTP for qualificada para o armazenamento em cache do Dispatcher AEM por qualificadores acima, os valores a seguir serão os valores padrão, a menos que a configuração personalizada esteja presente.

Tipo de conteúdo
Vida útil do cache padrão da CDN
HTML/JSON/XML
Até a invalidação
Assets (imagens, vídeos, documentos e assim por diante)
Nunca
Consultas persistentes (JSON)
1 minuto
Bibliotecas de clientes (JS/CSS)
30 dias
Outros
Até a invalidação

Como personalizar regras de cache

O cache do AEM Dispatcher pode ser configurado por meio da configuração do Dispatcher, incluindo:

  • O que é armazenado em cache
  • Quais partes do cache são invalidadas ao publicar/desfazer a publicação
  • Quais parâmetros de consulta de solicitação HTTP são ignorados ao avaliar o cache
  • Quais cabeçalhos de resposta HTTP são armazenados em cache
  • Ativar ou desativar o armazenamento em cache TTL
  • … e muito mais

Usar mod_headers para definir cabeçalhos de cache, a configuração vhost, não afetará o armazenamento em cache do Dispatcher (baseado em TTL), pois eles são adicionados à resposta HTTP depois que o AEM Dispatcher processa a resposta. Para afetar o armazenamento em cache do Dispatcher por meio de cabeçalhos de resposta HTTP, é necessário o código Java™ personalizado em execução no AEM Publish que define os cabeçalhos de resposta HTTP apropriados.

recommendation-more-help
4859a77c-7971-4ac9-8f5c-4260823c6f69