Activer la mise en cache

Pour modifier le comportement de mise en cache par défaut, vous pouvez mettre à jour les en-têtes de cache de deux façons.

  1. Configuration vhost de Dispatcher : disponible uniquement pour l’instance de publication AEM.
  2. Code Java™ personnalisé : disponible pour les instances de publication et de création AEM.

Examinons chacune de ces options.

Configuration vhost du Dispatcher

Cette option est l’approche recommandée pour activer la mise en cache, mais elle n’est disponible que pour l’instance de publication AEM. Pour mettre à jour les en-têtes de cache, utilisez le module mod_headers et la directive <LocationMatch> dans le fichier vhost du serveur Apache HTTP. La syntaxe générale se présente comme suit :

<LocationMatch "$URL$ || $URL_REGEX$">
    # Removes the response header of this name, if it exists. If there are multiple headers of the same name, all will be removed.
    Header unset Cache-Control
    Header unset Surrogate-Control
    Header unset Expires

    # Instructs the web browser and CDN to cache the response for 'max-age' value (XXX) seconds. The 'stale-while-revalidate' and 'stale-if-error' attributes controls the stale state treatment at CDN layer.
    Header set Cache-Control "max-age=XXX,stale-while-revalidate=XXX,stale-if-error=XXX"

    # Instructs the CDN to cache the response for 'max-age' value (XXX) seconds. The 'stale-while-revalidate' and 'stale-if-error' attributes controls the stale state treatment at CDN layer.
    Header set Surrogate-Control "max-age=XXX,stale-while-revalidate=XXX,stale-if-error=XXX"

    # Instructs the web browser and CDN to cache the response until the specified date and time.
    Header set Expires "Sun, 31 Dec 2023 23:59:59 GMT"
</LocationMatch>

Le tableau suivant résume l’objectif de chaque en-tête et des attributs applicables pour l’en-tête.

Navigateur webRéseau de diffusion de contenu (CDN)Description
Cache-ControlCet en-tête contrôle la durée de vie du navigateur web et du cache du réseau CDN.
Surrogate-ControlCet en-tête contrôle la durée de vie du cache du réseau CDN.
ExpirationCet en-tête contrôle la durée de vie du navigateur web et du cache du réseau CDN.
  • max-age  : cet attribut contrôle la « durée de vie » (TTL, Time to live) du contenu de la réponse en secondes.
  • stale-while-revalidate  : cet attribut contrôle le traitement de l’état obsolète du contenu de la réponse sur la couche de réseau CDN lorsque la requête reçue se trouve dans la période spécifiée en secondes. L’état obsolète est la période qui suit l’expiration du TTL et avant que la réponse ne soit revalidée.
  • stale-if-error  : cet attribut contrôle le traitement d’état obsolète du contenu de la réponse sur la couche de réseau CDN lorsque le serveur d’origine n’est pas disponible et que la requête reçue est comprise dans la période spécifiée en secondes.

Pour plus d’informations, consultez les détails de l’obsolescence et de la revalidation.

Exemple

Pour augmenter la durée de vie du navigateur web et du cache du réseau CDN du type de contenu HTML à 10 minutes sans traitement d’état obsolète, procédez comme suit :

  1. Dans votre projet AEM, recherchez le fichier vhost souhaité à partir du répertoire dispatcher/src/conf.d/available_vhosts.

  2. Mettez à jour le fichier vhost (par exemple, wknd.vhost) comme suit :

    <LocationMatch "^/content/.*\.(html)$">
        # Removes the response header if present
        Header unset Cache-Control
    
        # Instructs the web browser and CDN to cache the response for max-age value (600) seconds.
        Header set Cache-Control "max-age=600"
    </LocationMatch>
    

    Les fichiers vhost dans le répertoire dispatcher/src/conf.d/enabled_vhosts sont des liens symboliques vers des fichiers dans le répertoire dispatcher/src/conf.d/available_vhosts, veillez donc à créer des liens symboliques s’ils ne sont pas présents.

  3. Déployez les modifications vhost dans l’environnement AEM as a Cloud Service souhaité à l’aide de Cloud Manager – Pipeline de configuration de niveau web ou des commandes du RDE.

Cependant, pour avoir des valeurs différentes pour la durée de vie du navigateur web et du cache du réseau CDN, vous pouvez utiliser l’en-tête Surrogate-Control dans l’exemple ci-dessus. De même, pour que le cache arrive à expiration à une date et une heure spécifiques, vous pouvez utiliser l’en-tête Expires. En outre, à l’aide des attributs stale-while-revalidate et stale-if-error, vous pouvez contrôler le traitement de l’état obsolète du contenu de la réponse. Le projet AEM WKND comporte une configuration du cache du réseau CDN de traitement de l’état obsolète de référence.

De même, vous pouvez mettre à jour les en-têtes de cache d’autres types de contenu (JSON, JS, CSS et Assets).