Problèmes de configuration du contrôle du cache et de la mise en cache CDN/Dispatcher dans AEM

Le Dispatcher d’AEM et les réseaux CDN en aval tels que Fastly et Akamai renvoient un comportement de mise en cache inattendu : des valeurs de contrôle du cache qui ne correspondent pas à la durée de vie prévue, seule la première variation du contenu dynamique est mise en cache, des URL Dynamic Media sans en-tête de contrôle du cache et des réponses obsolètes qui persistent après l’invalidation. Aucune erreur n’apparaît dans les journaux ; le problème apparaît dans les en-têtes de réponse HTTP ou dans un comportement de cache incohérent. La cause est incorrecte ou absente de la configuration du contrôle de cache ou de la logique de clé de cache au niveau de la couche Dispatcher ou CDN, car les réseaux CDN respectent les en-têtes en amont et ne se mettent pas en cache de manière prévisible lorsque ces en-têtes ne sont pas définis. La configuration des en-têtes de contrôle du cache explicites dans Dispatcher, l’ajustement de la clé de cache pour les variations dynamiques et la définition d’ensembles de règles pour les ressources Dynamic Media permet de restaurer une mise en cache correcte et prévisible.

Description description

Environnements :

  • Adobe Experience Manager as a Cloud Service
  • Adobe Experience Manager Managed Services
  • Adobe Experience Manager On-premise
  • AEM Dispatcher et Apache HTTP Server
  • Couches CDN telles que Fastly et Akamai
  • Dynamic Media (Scene7)

Problème/Symptômes :

  • Les valeurs de contrôle du cache telles que max-age ou s-maxage ne correspondent pas aux valeurs attendues, telles qu’une valeur par défaut de max-age=300 ou max-age=60, s-maxage=7200.
  • Le réseau CDN met en cache uniquement la première variation de contenu généré dynamiquement.
  • Les URL Dynamic Media (Scene7) ne renvoient pas d’en-tête Cache-Control.
  • Dispatcher ou le réseau CDN continue à diffuser des réponses mises en cache même après l’invalidation attendue.
  • Vous ne pouvez pas contourner le réseau CDN ou Dispatcher pour afficher la sortie d’origine.

Cause principale :

La cause principale est une configuration incorrecte ou manquante des en-têtes de contrôle du cache ou de la logique de clé de cache au niveau de la couche Dispatcher ou CDN. Les réseaux de diffusion de contenu tels que Fastly et Akamai respectent les en-têtes de contrôle du cache en amont, et les valeurs par défaut de Dispatcher influencent ce que les caches de réseau de diffusion de contenu mettent en cache ce qui fait que lorsque les en-têtes ne sont pas explicitement configurés, les caches de réseau de diffusion de contenu répondent de manière inattendue. Le contenu dynamique est mis en cache lorsque la clé de cache ne varie pas selon les attributs spécifiques à l’utilisateur. Dynamic Media et Scene7 nécessitent une configuration de jeu de règles pour générer des en-têtes de contrôle du cache.

Comment confirmer

  1. Vérifiez l’en-tête actuel du contrôle du cache à partir d’un navigateur ou avec curl. Exécutez curl -I https://example.com/path/to/page.html et examinez la valeur Cache-Control, telle que public, max-age=60, s-maxage=7200 ou max-age=300. Vérifiez qu’il correspond à vos attentes en matière de production. Si l’en-tête est entièrement manquant, appliquez une configuration explicite dans la résolution.
  2. Vérifiez si le réseau CDN met en cache uniquement par URL. Demandez la même URL deux fois, en attendant une sortie dynamique différente. Si les deux réponses sont identiques, le CDN ou le Dispatcher ne met en cache que la première variation.
  3. Contournez les caches pour afficher la sortie d’origine. Ajoutez un paramètre de requête à l’URL, tel que https://example.com/page.html?q=123, pour contourner le CDN et Dispatcher. La réponse renvoie la sortie de l’éditeur d’origine, que vous pouvez comparer à la réponse mise en cache.

Résolution resolution

Pour résoudre ce problème, procédez comme suit :

  1. Définissez les valeurs de contrôle du cache dans la configuration Dispatcher. Mettez à jour les règles dans lesquelles les en-têtes de contrôle du cache sont définis. Sur AEM as a Cloud Service, modifiez le code Dispatcher dans le référentiel du projet et déployez-le via Cloud Manager. Sur Managed Services et sur site, mettez à jour la configuration Apache et Dispatcher sur le serveur ou via le pipeline Cloud Manager. Après le déploiement, exécutez à nouveau curl -I pour confirmer que les en-têtes reflètent la TTL mise à jour.
  2. Configurez la mise en cache des variations dynamiques le cas échéant. Si le contenu doit varier par paramètre, incluez les paramètres de requête ou les cookies requis dans la clé de cache, configurée dans les règles de Dispatcher. Envoyez plusieurs requêtes avec des paramètres différents et confirmez que le réseau CDN renvoie des réponses distinctes.
  3. Définissez les en-têtes de contrôle du cache pour les ressources Dynamic Media et Scene7. Utilisez les ensembles de règles Dynamic Media et Scene7 pour définir l’en-tête Cache-Control avec la valeur de max-age=N souhaitée. Exécutez curl -I sur l’URL Dynamic Media, telle que is/image/..., et vérifiez que l’en-tête Cache-Control s’affiche.
  4. Effacez ou ignorez le cache pour valider le résultat. Une fois la configuration modifiée, exécutez à nouveau curl -I et confirmez que l’en-tête Cache-Control correspond à la durée de vie souhaitée. Lorsque des en-têtes de débogage CDN sont disponibles, vérifiez que le CDN renvoie la TTL mise à jour et confirmez les variations dynamiques en demandant du contenu pour plusieurs utilisateurs ou paramètres.

Si le problème persiste

Contactez l’assistance Adobe avec la sortie curl -I des URL affectées, les fragments de code de configuration Dispatcher qui contrôlent le contrôle du cache, les détails de la couche CDN, tels qu’Akamai ou Fastly, et une description du comportement attendu ou réel.

Lecture connexe

recommendation-more-help
experience-cloud-kcs-help-kbarticles