Problème de mise en cache du répartiteur lors de l'affichage du rendu d'image dans AEM

Problème

Le répartiteur met en cache un dossier au lieu d'un fichier d'images sous /content/dam dans certains scénarios.

Par exemple, vous avez ces url :
/content/dam/Albin/Untitled.jpg - Image d'origine
/content/dam/Albin/Untitled.jpg/jcr:content/renditions/cq5dam.thumbnail.319.319.png - Rendu pour les périphériques 1x.

Parfois, la deuxième URL est mise en cache. L’URL d’image d’origine ne peut donc pas être mise en cache.

Environnement

  • AEM 6.0 SP3
  • Dispatcher 4.1.11 pour Apache 2.4 sur Linux x86 64 bits

Cause

Le cas suivant présente une cause courante de ce problème:

Si l’accès initial de l'image s'effectue à partir de périphériques mobiles, le dossier Untitled.jpg est créé pour mettre en cache les rendus d'image.  Les images en cours de numérisation correspondent aux périphériques mobiles.   Par exemple, ce fichier serait masqué /content/dam/Albin/Untitled.jpg/jcr:content/renditions/cq5dam.thumbnail.319.319.png et Untitled.jpg serait mis en cache sous forme de dossier, pas de fichier.

Alors que l'image est accessible à partir des navigateurs de bureau, le répartiteur essaie de renvoyer le fichier Untitled.jpg sous la forme d'une image.  Par exemple, l'image d'origine /content/dam/Albin/Untitled.jpg est conçue pour les navigateurs de bureau.  Par conséquent, le lien de l’image est brisé dans le navigateur.

Sinon, si l'image est d'abord accessible à partir du navigateur de bureau, alors le dispatcher cache Untitled.jpg sous la forme d'une image. La demande suivante à l’image en cours de numérisation a échoué car l’image n’existe pas dans le cache du répartiteur.  L’image est récupérée à partir de l’instance de publication pour le rendu.  Les images de rendu ne sont pas masqués dans ce scénario comme Untitled.jpg et sont créées sous la forme d'une image.

Résolution

Dans ce cas de figure, il est recommandé d’accéder aux images à l’aide de sélecteurs au lieu de référencer directement le rendu dans DAM. Vous pouvez ainsi activer l’accès et la mise en cache pour l’ensemble, les rendus et l’image d’origine. Vous trouverez ci-dessous une explication détaillée de la même façon.

Par exemple, si l'image dans un AEM à accéder : ? /content/dam/mysite/image.png/_jcr_content/renditions/image.thumbnail.48.48.png

Pour utiliser l’approche mentionnée, l’URL utilisée a le format ci-dessous :

Pour les rendus : /content/dam/mysite/image.png.thumb.48.48.png
Pour image d'origine : /content/dam/mysite/image.png

Reportez-vous à l’exemple de travail dans l’occurrence de OOTB AEM :

Image d'origine : ? /content/dam/geometrixx-outdoors/activities/snowboarding/PDP_1_c05.jpg
: Rendu ? /content/dam/geometrixx-outdoors/activities/snowboarding/PDP_1_c05.jpg/jcr:content/renditions/cq5dam.thumbnail.48.48.png?cq_ck=1466443646000
en utilisant des sélecteurs : ? /content/dam/geometrixx-outdoors/activities/snowboarding/PDP_1_c05.jpg.thumb.48.48.png
Rendu avec la hauteur et la largeur différents, 140,100 : ? /dam/geometrixx-outdoors/activities/snowboarding/PDP_1_c18.jpg.thumb.100.140.png ? (Remarque : Le Width sont inversés dans ce cas)

Remarque :

Si ce problème est généré dans d'autres scénarios, alors, pour éviter des erreurs 403 provoquées par les dossiers, vous pouvez ajouter la directive DirectorySlash Off dans la configuration virtualhost utilisée par AEM dans le serveur HTTP Apache.  Cela permet d'éviter de diffuser une réponse 403 au lieu de l'image d'origine.  Voir cet article pour plus détails.

 Adobe

Recevez de l’aide plus rapidement et plus facilement

Nouvel utilisateur ?