L’optimisation de la mise en cache dans votre architecture AEM est l’un des moyens les plus rapides pour obtenir un gain de performances important. Cet article explique comment optimiser les différents caches disponibles dans une architecture AEM.
Architecture AEM et mise en cache
Dans toutes les architectures d’AEM, l’utilisateur rencontre plusieurs couches de cache lors de sa visite sur votre site. Il existe 4 calques de cache à prendre en compte dans une architecture d’AEM standard. Cela inclut le navigateur web, le réseau de diffusion de contenu, Dispatcher et AEM instances.
Mise en cache du navigateur
Le premier niveau de cache qu’un utilisateur rencontre lors d’une visite répétée de votre site est son propre navigateur. La mise en cache au niveau du navigateur est généralement effectuée via le Cache-Control: max-age=… response header. Le max-age indique au navigateur combien de secondes il doit mettre le fichier en cache avant de tenter de le "revalider" ou de le demander à nouveau sur le site. Ce concept de cache max-age est généralement appelé "expiration du cache" ou TTL ("durée de vie").
Il existe différentes options (ou "directives") dans la variable Cache-Control en-tête qui affecte la manière dont la mise en cache se produit. Voici quelques directives courantes :
private - le private dans la variable Cache-Control En-tête , il est ainsi créé afin que le fichier ne soit mis en cache que dans le navigateur, et non dans les caches intermédiaires tels que les CDN. Une utilisation pratique de cette directive serait si votre page comprend du contenu personnalisé/spécifique à l’utilisateur.
Cas d’utilisation :
Cache-Control: max-age=300, private
s-maxage - le s-maxage dans la variable Cache-Control L’en-tête vous permet de définir un TTL différent pour les caches partagés, tels que les CDN. Lorsque cette valeur est définie, le navigateur utilise ce qui est défini dans max-age et d’autres caches respecteraient s-maxage à la place.
Cas d’utilisation :
Cache-Control: max-age=600, s-maxage=300
Les navigateurs modernes prennent tous en charge la variable Cache-Control Toutefois, certains anciens en-têtes obsolètes existent à partir de HTTP/1.0 et peuvent avoir un impact sur la mise en cache. Ces en-têtes sont Expires et Pragma. Si vous n’avez pas besoin de prendre en charge de très anciens navigateurs, n’envoyez pas ces en-têtes de réponse.
Outre la mise en cache, la revalidation est également un concept important. La revalidation repose sur la fonction Last-Modified (response) / If-Modified-Since (requête), et la variable ETag (réponse) / If-None-Match en-têtes (requête).
Attention :
Test du navigateur :
Lors du test de la mise en cache dans Google Chrome, si vous effectuez des tests sur https et que vous disposez d’un certificat auto-signé, rien n’est mis en cache. Chrome ne met pas en cache les réponses ni n’effectue de revalidation lorsqu’il existe un certificat non approuvé ou non valide.
Remarque sur Dispatcher:
Il existe un problème avec AEM Dispatcher v4.2.3 et versions antérieures dans lesquelles la variable /enableTTL uniquement les caches utilisant max-age . Cela signifie que, même si private ou s-maxage Les directives sont définies. elles sont toujours mises en cache si max-age est définie. Ce problème est résolu dans Dispatcher 4.2.4 et versions ultérieures.
Mise en cache CDN
A CDN ou "Réseau de diffusion de contenu", est un réseau distribué de serveurs web conçu pour mettre en cache et diffuser du contenu à partir de l’emplacement le plus proche de vos utilisateurs. Cela réduit les sauts et la distance du réseau de l’ordinateur de l’utilisateur par rapport à votre contenu, ce qui réduit la fréquence "Tour Trip Time" (RTT). La TTF correspond au temps nécessaire au navigateur pour envoyer une requête à votre site et recevoir une réponse. La concurrence dans l’espace du fournisseur de réseau CDN a rendu les réseaux CDN très rentables. Cela facilite la décision d’utiliser un réseau de diffusion de contenu pour votre site. Si vous n’utilisez pas encore de réseau de diffusion de contenu, vous devez absolument en incorporer un sur votre site.
Il existe de nombreux fournisseurs de réseau de diffusion de contenu, chacun d’eux offre différentes fonctionnalités et configurations.
FONCTIONNEMENT DE LA MISE EN CACHE DU RÉSEAU CDN
Les CDN mettent en cache le contenu en suivant des règles similaires aux navigateurs. Ils dépendent de la variable Cache-Control HTTP response et revient généralement au Expires header if Cache-Control L’en-tête se trouve.
La plupart des CDN offrent un moyen de déclencher un vidage manuel du cache. Dans de nombreux cas, les vidages de cache ont un certain délai (par exemple, 15 minutes) en ce qui concerne la propagation vers tous les serveurs Edge contenant vos fichiers.
Optimisation de l’utilisation du réseau de diffusion de contenu
Pour vous assurer que vous mettez en cache les fichiers de manière optimale dans le réseau de diffusion de contenu, procédez comme suit :
Utilisation d’un réseau de diffusion de contenu qui prend en charge stale-while-revalidate et stale-if-error dans les Cache-Control en-tête .
GZip compresse les réponses pour tous les types de fichiers qui ne sont pas pré-compressés.
Activé Apache, cela peut être effectué via la directive AddOutputFilterByType :
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript
Si votre fournisseur de réseau de diffusion de contenu prend en charge Inclusions côté périphérie (ESI) exploitez ensuite cette fonctionnalité.
Fournisseurs de réseau de diffusion de contenu populaires
Voici une liste de certains fournisseurs de réseau de diffusion de contenu populaires :
Attention :
Faites attention aux Vary en-tête de la réponse. Dans certains cas, Vary peut empêcher le CDN et le navigateur d’ignorer entièrement la mise en cache. En règle générale, évitez d’ajouter Vary sauf pour Vary: Accept-Encoding (appliquée uniquement lorsque la réponse est compressée par gzip). En d’autres termes, si vous devez "varier" la sortie d’une réponse, utilisez une URL différente.
Par exemple, si vous disposez d’une version différente du HTML pour mobile et bureau, utilisez une autre URL. Cela permet aux CDN et aux navigateurs de mettre en cache plus efficacement.
AEM Dispatcher Mise en cache
Si le cache du réseau CDN a expiré, la demande atteint l’AEM dispatcher cache. À ce niveau, de nombreuses actions peuvent être entreprises pour optimiser la mise en cache.
Puisqu’il s’agit d’un sujet plus important, reportez-vous à la section cet article pour plus d’informations sur l’optimisation de la variable dispatcher cache.
Instances de publication AEM
Au niveau de l’AEM, quelques actions sont nécessaires pour optimiser les différentes couches de cache :
Définissez les en-têtes de réponse HTTP suivants qui ne sont pas définis par AEM par défaut.
Si le site comporte du contenu personnalisé/dynamique :
Optimisez les bibliothèques clientes.