Expiração de objetos estáticos expiration-of-static-objects

CAUTION
AEM 6.4 chegou ao fim do suporte estendido e esta documentação não é mais atualizada. Para obter mais detalhes, consulte nossa períodos de assistência técnica. Encontre as versões compatíveis here.

Os objetos estáticos (por exemplo, ícones) não são alterados. Por conseguinte, o sistema deve ser configurado de modo a não expirar (por um período de tempo razoável), reduzindo assim o tráfego desnecessário.

Isso tem o seguinte impacto:

  • Descarrega solicitações da infraestrutura do servidor.
  • Aumenta o desempenho do carregamento de página, à medida que o navegador armazena em cache objetos no cache do navegador.

As expirações são especificadas pelo padrão HTTP em relação à "expiração" dos arquivos (consulte, por exemplo, o capítulo 14.21 de RFC 2616 " Protocolo de transferência de hipertexto — HTTP 1.1"). Esse padrão usa o cabeçalho para permitir que os clientes armazenem objetos em cache até que sejam considerados obsoletos; esses objetos são armazenados em cache pelo tempo especificado sem que seja feita qualquer verificação de status no servidor de origem.

NOTE
Essa configuração é completamente separada do Dispatcher (e não funcionará para ele).
O objetivo do Dispatcher é armazenar dados em cache na frente do AEM.

Todos os arquivos, que não são dinâmicos e que não mudam ao longo do tempo, podem e devem ser armazenados em cache. A configuração do servidor HTTPD do Apache pode ser semelhante a um dos seguintes - dependendo do ambiente:

CAUTION
Você deve tomar cuidado ao definir o período durante o qual um objeto é considerado atualizado. Como há sem verificação até que o período especificado tenha expirado, o cliente pode acabar apresentando o conteúdo antigo do cache.
  1. Para uma instância de autor:

    code language-xml
    LoadModule expires_module modules/mod_expires.so
    <Location /libs>
      ExpiresByType text/css "access plus 1 month"
      ExpiresByType text/javascript "access plus 1 month"
      ExpiresByType image/png "access plus 1 month"
      ExpiresByType image/gif "access plus 1 month"
    </Location>
    

    Isso permite que o cache intermediário (por exemplo, o cache do navegador) armazene arquivos CSS, Javascript, PNG e GIF por até um mês, até que expirem. Isso significa que elas não precisam ser solicitadas do AEM ou do servidor da Web, mas podem permanecer no cache do navegador.

    Outras seções do site não devem ser armazenadas em cache em uma instância do autor, pois estão sujeitas a alterações a qualquer momento.

  2. Para uma instância de publicação:

    code language-xml
    LoadModule expires_module modules/mod_expires.so
    <Location /content>
      ExpiresByType text/css "access plus 1 day"
      ExpiresByType text/javascript "access plus 1 day"
      ExpiresByType image/png "access plus 1 day"
      ExpiresByType image/gif "access plus 1 day"
    </Location>
    <Location /etc/designs>
      ExpiresByType text/css "access plus 1 day"
      ExpiresByType text/javascript "access plus 1 day"
      ExpiresByType image/png "access plus 1 day"
      ExpiresByType image/gif "access plus 1 day"
    </Location>
    

    Isso permite que o cache intermediário (por exemplo, o cache do navegador) armazene arquivos CSS, Javascript, PNG e GIF por até um dia em caches de clientes. Embora este exemplo ilustre as configurações globais para tudo o que está abaixo /content e /etc/designs, é necessário torná-lo mais granular.

    Dependendo da frequência com que seu site é atualizado, você também pode considerar o armazenamento em cache de páginas de HTML. Um prazo razoável seria de 1 hora:

    code language-xml
    <Location /content>
      ExpiresByType text/html "access plus 1 hour"
    </Location>
    

Após configurar os objetos estáticos, verifique request.log, ao selecionar páginas que contêm esses objetos, para confirmar que nenhuma solicitação (desnecessária) está sendo feita para objetos estáticos.

recommendation-more-help
6a71a83d-c2e0-4ce7-a6aa-899aa3885b56