Problema de cache do dispatcher ao exibir as representações de imagem no AEM

Problema

O Dispatcher armazena em cache uma pasta em vez de um arquivo para imagens em /content/dam em determinados cenários.

Por exemplo, com os seguintes URLs:
/content/dam/Albin/Untitled.jpg - Imagem original
/content/dam/Albin/Untitled.jpg/jcr:content/renditions/cq5dam.thumbnail.319.319.png - Representação para dispositivos 1x.

Às vezes, o segundo URL é armazenado em cache. Portanto, o URL da imagem original não pode ser armazenado em cache.

Ambiente

  • AEM 6.0 SP3
  • Dispatcher 4.1.11 para o Apache 2.4 no Linux x86 de 64 bits

Causa

O cenário abaixo é uma causa comum desse problema:

Se a imagem for acessada pela primeira vez a partir dos dispositivos móveis, a pasta Untitled.jpg será criada para armazenar em cache a imagem de representações.  Imagens de representação são correspondidas para dispositivos móveis.   Por exemplo, esse arquivo seria armazenado em cache como /content/dam/Albin/Untitled.jpg/jcr:content/renditions/cq5dam.thumbnail.319.319.png, e Untitled.jpg seria armazenado em cache como uma pasta, não como um arquivo.

Enquanto a imagem é acessada a partir de navegadores de desktop, o dispatcher tenta retornar a pasta Untitled.jpg como uma imagem.  Por exemplo, /content/dam/Albin/Untitled.jpg, a imagem original é correspondida para navegadores de desktop.  Portanto, o link da imagem está quebrado no navegador.

Como alternativa, se a imagem for acessada pela primeira vez no navegador do desktop, o dispatcher armazena Untitled.jpg em cache como uma imagem. A solicitação subsequente para a imagem de representação falha, pois a imagem não existe no cache do dispatcher.  A imagem é recuperada da instância de publicação para representação.  Imagens de representação não são armazenadas em cache neste cenário como Untitled.jpg e são criadas como uma imagem.

Resolução

Nesse cenário, a sugestão é acessar as imagens usando seletores em vez de fazer referência direta às representações no DAM. Isso permitiria o acesso e o armazenamento em cache de tudo, representações e imagens originais também. Abaixo está a explicação detalhada.

Por exemplo, se a imagem no AEM a ser acessada é: /content/dam/mysite/image.png/_jcr_content/renditions/image.thumbnail.48.48.png

Para usar a abordagem mencionada, o URL usado é do formato abaixo:

Para representações: /content/dam/mysite/image.png.thumb.48.48.png
Para imagem original: /content/dam/mysite/image.png

Consulte o exemplo de trabalho na instância do OOTB AEM:

Imagem original: /content/dam/geometrixx-outdoors/activities/snowboarding/PDP_1_c05.jpg
Representação: /content/dam/geometrixx-outdoors/activities/snowboarding/PDP_1_c05.jpg/jcr:content/renditions/cq5dam.thumbnail.48.48.png?cq_ck=1466443646000
Representação com seletores: /content/dam/geometrixx-outdoors/activities/snowboarding/PDP_1_c05.jpg.thumb.48.48.png
Representação com altura e largura diferentes, 140.100: /dam/geometrixx-outdoors/activities/snowboarding/PDP_1_c18.jpg.thumb.100.140.png (Nota: altura e largura são invertidas neste caso).

Observação:

No caso, esse problema é encontrado em outros cenários. Portanto, para evitar erros 403 causados pelas pastas, adicione a diretiva DirectorySlash Off na configuração virtualhost usada pelo AEM no Apache HTTP Server.  Isso ajudaria a evitar uma resposta 403 em vez da imagem original.  Consulte este artigo para obter mais informações.

Logotipo da Adobe

Fazer logon em sua conta