Edge Side Includes edge-side-includes
aemcs-cdn-config-adopter@adobe.com
et décrivez votre cas d’utilisation.La vitesse de diffusion du contenu bénéficie d’une mise en cache agressive des pages, obtenue en définissant des en-têtes de cache avec des valeurs TTL (durée de vie) élevées. Cela peut s’avérer difficile lorsque les pages incluent du contenu dynamique, qui doit être fréquemment actualisé ou qui ne peut pas du tout être mis en cache. Heureusement, il existe des stratégies pour lesquelles la page d’HTML contenant peut être mise en cache avec un TTL élevé, ce qui entraîne un report de la récupération des fragments de contenu les plus dynamiques à une date ultérieure, que ce soit par le biais du code JavaScript côté client ou du réseau de diffusion de contenu. Cette dernière approche est une norme appelée Edge Side Includes (ESI), qui est prise en charge pour les sites rendus avec publication AEM. L’HTML inclut des balises ESI qui demandent au réseau de diffusion de contenu de différer la diffusion de la page au navigateur jusqu’à ce qu’il évalue ces balises, en récupérant du contenu supplémentaire plus dynamique (TTL inférieur) à partir de l’origine (ou du cache CDN si son délai d’activation n’a pas expiré).
Dans certains cas d’utilisation, les inclusions côté Edge peuvent s’avérer utiles :
- Affichage du nom d’un utilisateur final ou d’autres informations propres à l’utilisateur final.
- Affichage d’une liste d’informations récentes, telles que des articles d’actualité ou des cours des actions.
Syntaxe ESI esi-syntax
La syntaxe ESI est la suivante, si une page parente /content/page.html
comprend un extrait de code content/snippets/mysnippet.html
.
<html>
<head>
<title>My Site</title>
</head>
<body>
<div id="content">
<esi:include src="/content/snippets/mysnippet.html" />
</div>
</body>
</html>
Pour plus d’informations, voir la spécification ESI .
Considérations esi-syntax-considerations
- Les balises ESI suivantes sont prises en charge : inclure, commenter, supprimer.
- Les balises ESI sont traitées sur le réseau de diffusion de contenu de manière séquentielle plutôt que simultanée. De nombreuses balises ESI sur une page avec de faibles TTL peuvent donc ajouter une latence à l’expérience de l’utilisateur final.
- La profondeur maximale d’ESI : le traitement d’inclusion est de 5.
- ESI total maximal : inclure les fragments de traitement est de 256.
Configuration Apache esi-apache
Si vous disposez de pages avec des balises ESI, vous devez déclarer les propriétés suivantes dans la configuration Apache :
<LocationMatch "/parent-pages/*content/page.html">
# disable dispatcher compression
SetEnv no-gzip 1
# enable esi processing
Header set x-aem-esi "on"
# enable edgeCDN compression
Header set x-aem-compress "on"
# typically the main page is cached at the CDN
Header always set Cache-Control "max-age=300"
</LocationMatch>
<LocationMatch "/content/snippets/mysnippet.html">
SetEnv no-gzip 1
# typically the included page is either set to a lower TTL than the parent page, or not cached at all, as these 2 commented declarations show, respectively:
#Header always set Cache-Control "no-cache"
#Header always set Cache-Control "max-age=50"
</LocationMatch>
Les propriétés configurées se comportent comme suit :
La page parente et les fragments de code inclus doivent définir no-gzip sur 1.
Ce paramètre remplace le paramètre de compression qu’Apache aurait pu utiliser autrement, en fonction des valeurs
Accept-Encoding
de la requête.no-gzip
défini sur 1), cela peut réduire la latence.Si cet en-tête n’est pas défini, lorsque le réseau de diffusion de contenu récupère le contenu de l’origine non compressé, il diffusera également le contenu au client non compressé. Il est donc nécessaire de définir cet en-tête si
no-gzip
est défini sur 1 (obligatoire pour ESI) et qu’il est nécessaire de diffuser du contenu compressé à partir du CDN vers le navigateur.Sling Dynamic Include esi-sdi
Bien que cela ne soit pas nécessaire, l’inclusion Sling Dynamic Include (SDI) peut être utilisée pour générer des fragments de code ESI interprétés sur le réseau de diffusion de contenu.