{"id":23427,"date":"2016-08-19T13:04:00","date_gmt":"2016-08-19T13:04:00","guid":{"rendered":"https:\/\/site.axamit.com\/?p=615"},"modified":"2026-06-23T07:16:31","modified_gmt":"2026-06-23T07:16:31","slug":"comment-activer-le-cache-aem-dispatcher","status":"publish","type":"post","link":"https:\/\/axamit.com\/fr\/blog\/adobe-experience-manager\/comment-activer-le-cache-aem-dispatcher\/","title":{"rendered":"Comment activer le cache AEM Dispatcher ?"},"content":{"rendered":"<div class=\"custom-toc\"><ul><li class=\"h2-toc\"><a href=\"#renders\">Renders<\/a><\/li><li class=\"h2-toc\"><a href=\"#filters\">Filtres<\/a><\/li><li class=\"h2-toc\"><a href=\"#cache\">Cache<\/a><\/li><li class=\"h2-toc\"><a href=\"#headers\">En-t\u00eates<\/a><\/li><li class=\"h2-toc\"><a href=\"#summary\">R\u00e9sum\u00e9<\/a><\/li><\/ul><\/div>\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><em>Voir aussi :<\/em><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"http:\/\/axamit.com\/blog\/adobe-experience-manager\/aem-dispatcher\/\" data-type=\"post\" data-id=\"2473\">Partie 1 : Pr\u00e9sentation succincte du r\u00e9partiteur (dispatcher) et de ses objectifs<\/a><\/li>\n<\/ul>\n<\/div>\n<\/div>\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"wp-block-paragraph\">La mise en cache est un facteur de performance cl\u00e9 et une source de probl\u00e8mes lorsqu&rsquo;elle n&rsquo;est pas configur\u00e9e correctement. Cet article donnera un aper\u00e7u et des d\u00e9tails pratiques utiles sur la fa\u00e7on d&rsquo;ajuster la mise en cache pour un environnement de d\u00e9veloppement local et l&#8217;emplacement de stockage des fichiers mis en cache.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Alors, qu&rsquo;est-ce que le cache dans AEM, et comment fonctionne-t-il ?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Le cache dans AEM est un composant qui stocke de mani\u00e8re transparente les donn\u00e9es afin que les futures requ\u00eates pour ces donn\u00e9es puissent \u00eatre servies plus rapidement. Une fois demand\u00e9, un document cacheable est v\u00e9rifi\u00e9 par le Dispatcher pour identifier si ce document existe dans le syst\u00e8me de fichiers du serveur web :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Si le document est mis en cache, le Dispatcher renvoie le fichier.<\/li>\n\n\n\n<li>Le Dispatcher demande le document \u00e0 l&rsquo;instance AEM s&rsquo;il n&rsquo;est pas mis en cache.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Par d\u00e9faut, les ressources ne seront mises en cache que si toutes les conditions suivantes sont remplies :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>La requ\u00eate HTTP utilise la m\u00e9thode GET ;<\/li>\n\n\n\n<li>L&rsquo;URL demand\u00e9e a une extension (telle que .html ou .xml) ;<\/li>\n\n\n\n<li>L&rsquo;URL demand\u00e9e n&rsquo;a pas de cha\u00eene de requ\u00eate (il n&rsquo;y a pas de param\u00e8tres apr\u00e8s l&rsquo;extension) ;<\/li>\n\n\n\n<li>La requ\u00eate n&rsquo;a pas d&rsquo;en-t\u00eate \u201cAuthorization\u201d (sauf si AllowAuthorized est \u00e9gal \u00e0 1).<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Les param\u00e8tres sont d\u00e9finis dans le fichier de configuration du r\u00e9partiteur. Dans notre cas, il s&rsquo;agit d&rsquo;un fichier conf\/dispatcher.any. Le fichier de configuration contient une s\u00e9rie de propri\u00e9t\u00e9s \u00e0 valeur unique ou multiple qui contr\u00f4lent le comportement du r\u00e9partiteur :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>les noms de propri\u00e9t\u00e9s sont pr\u00e9c\u00e9d\u00e9s d&rsquo;une barre oblique (\u201c\/\u201d) ;<\/li>\n\n\n\n<li>les propri\u00e9t\u00e9s \u00e0 valeurs multiples encadrent les \u00e9l\u00e9ments enfants \u00e0 l&rsquo;aide d&rsquo;accolades (\u201c{}\u201d) ;<\/li>\n\n\n\n<li>les commentaires commencent par le symbole \u2018#\u2019.<\/li>\n<\/ul>\n<\/div>\n<\/div>\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<h2 class=\"wp-block-heading\" id=\"renders\">Renders<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Premi\u00e8rement, vous devez sp\u00e9cifier les renders pour le r\u00e9partiteur. Les renders sont des instances AEM \u00e0 partir desquelles le r\u00e9partiteur re\u00e7oit le contenu, lequel peut \u00eatre mis en cache. Les renders sont la premi\u00e8re chose que nous d\u00e9finirons dans notre fichier de configuration. Le Dispatcher \u00e9quilibrera automatiquement la charge entre ces instances AEM si vous d\u00e9finissez plus d&rsquo;un render. Dans notre cas, nous ne d\u00e9finirons qu&rsquo;un seul render : l&rsquo;instance AEM publique.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    \/renders\n      {\n      \/rend01\n        {\n        \/hostname \"localhost\"\n        \/port \"4503\"\n        }\n      }\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Vous pouvez maintenant red\u00e9marrer le\u00a0<strong>httpd<\/strong>\u00a0server et v\u00e9rifier si le dispatcher peut demander des ressources \u00e0 une instance AEM publique.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Par exemple, si vous avez une page fonctionnelle\u00a0http:\/\/localhost:4503\/content\/geometrixx\/en.html, alors la version dispatcher de cette page devrait \u00eatre disponible \u00e0 l&rsquo;adresse\u00a0http:\/\/localhost\/content\/geometrixx\/en.html. Notez que nous ne d\u00e9finissons pas le port dans la requ\u00eate URL car le dispatcher (plus pr\u00e9cis\u00e9ment, httpd) fonctionne sur le port 80, qui est la valeur par d\u00e9faut pour tous les navigateurs.<\/p>\n<\/div>\n<\/div>\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<h2 class=\"wp-block-heading\" id=\"filters\">Filtres<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">La section\u00a0<strong>\/filter<\/strong>\u00a0sp\u00e9cifie les requ\u00eates HTTP que le dispatcher peut accepter. Toutes les autres requ\u00eates sont renvoy\u00e9es au serveur web avec un code d&rsquo;erreur 404 (page non trouv\u00e9e). Pour notre d\u00e9monstration, autorisons l&rsquo;acc\u00e8s \u00e0 toutes les ressources.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    \/filter\n      {\n      \/0001 { \/type \"allow\" \/glob \"*\" }\n      }\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Types de filtres : \u00ab autoriser \u00bb ou \u00ab refuser \u00bb.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Les globs seront compar\u00e9s \u00e0 la ligne de requ\u00eate enti\u00e8re, par ex. :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/0001 { \/type \"allow\" \/glob \"* \/index.html *\" }\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ce glob correspond \u00e0 la requ\u00eate \u00ab GET \/index.html HTTP\/1.1 \u00bb mais pas \u00e0 \u00ab GET \/index.html?a=b HTTP\/1.1 \u00bb.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Au lieu des \u00ab globs \u00bb, vous pouvez utiliser des \u00e9l\u00e9ments s\u00e9par\u00e9s comme \u00ab url \u00bb, \u00ab method \u00bb, \u00ab protocol \u00bb, \u00ab extension \u00bb pour d\u00e9finir votre filtre. En plus de \u00ab url \u00bb, vous pouvez utiliser \u00ab path \u00bb, \u00ab selectors \u00bb, \u00ab extension \u00bb, \u00ab suffix \u00bb.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Lorsqu&rsquo;une requ\u00eate correspond \u00e0 plusieurs mod\u00e8les de filtre, seul le dernier mod\u00e8le de filtre est appliqu\u00e9.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Apr\u00e8s avoir d\u00e9fini vos filtres, vous pouvez red\u00e9marrer\u00a0<strong>httpd<\/strong>\u00a0et v\u00e9rifier si le dispatcher a acc\u00e8s \u00e0 toutes les ressources de l&rsquo;instance AEM publique. Bien s\u00fbr, vous devriez refuser l&rsquo;acc\u00e8s \u00e0 certaines ressources pour des raisons de s\u00e9curit\u00e9 dans un environnement de production r\u00e9el.<\/p>\n<\/div>\n<\/div>\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<h2 class=\"wp-block-heading\" id=\"cache\">Cache<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">La section de mise en cache d\u00e9termine les ressources que le dispatcher mettra en cache. Cette section contient de nombreuses r\u00e8gles similaires aux r\u00e8gles de filtrage, avec quelques param\u00e8tres suppl\u00e9mentaires.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Par exemple,\u00a0<strong>\/docroot<\/strong>\u00a0d\u00e9termine l&#8217;emplacement du r\u00e9pertoire o\u00f9 les fichiers mis en cache sont stock\u00e9s. La valeur doit \u00eatre exactement le m\u00eame chemin que la racine des documents du serveur web afin que le dispatcher et le serveur web puissent g\u00e9rer les m\u00eames fichiers.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pour notre d\u00e9monstration, configurons le docroot et autorisons la mise en cache de toutes les ressources re\u00e7ues de notre rendu (instance de publication) :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    \/cache\n      {\n      \/docroot \"\/Apache22\/htdocs\"\n      \/rules\n        {\n        \/0000\n          {\n          \/glob \"*\"\n          \/type \"allow\"\n          }\n        }\n      }\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Une fois ces modifications appliqu\u00e9es, vous pouvez red\u00e9marrer le\u00a0<strong>serveur HTTPd<\/strong>, ouvrir une nouvelle fen\u00eatre de navigation priv\u00e9e pour un acc\u00e8s non autoris\u00e9 sans utiliser l&rsquo;en-t\u00eate \u00ab Authorization \u00bb (Chrome ctrl+shift+n, Firefox ctrl+shift+p) et vous rendre sur :\u00a0http:\/\/localhost\/content\/geometrixx\/en\/products.html.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Les ressources mises en cache devraient appara\u00eetre dans le r\u00e9pertoire htdocs. Les ressources ont une hi\u00e9rarchie de type URL : les r\u00e9pertoires forment des chemins, et les fichiers HTML statiques contiennent le contenu rendu.<\/p>\n<\/div>\n<\/div>\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<h2 class=\"wp-block-heading\" id=\"headers\">En-t\u00eates<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Vous savez que les fichiers HTML mis en cache contiennent uniquement du contenu HTML. Mais que faire si nous voulons mettre en cache les en-t\u00eates de r\u00e9ponse re\u00e7us des rendus ?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Par exemple, si les r\u00e9ponses des rendus contiennent un en-t\u00eate \u00ab Content-Type \u00bb qui d\u00e9finit l&rsquo;encodage, le contenu HTML risque de ne pas s&rsquo;afficher correctement sans cet en-t\u00eate. C&rsquo;est \u00e0 cela que sert le bloc\u00a0<strong>\/headers<\/strong>\u00a0situ\u00e9 dans les sections\u00a0<strong>\/cache<\/strong>. Mettons en cache certains en-t\u00eates courants et utiles :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/cache\n{\n      \/headers\n        {\n        \"Cache-Control\"\n        \"Content-Disposition\"\n        \"Content-Type\"\n        \"Expires\"\n        \"Last-Modified\"\n        \"X-Content-Type-Options\"\n        }\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Apr\u00e8s avoir modifi\u00e9 les en-t\u00eates dans votre fichier de configuration du dispatcher, supprimez tout le cache du\u00a0<strong>r\u00e9pertoire htdocs<\/strong>\u00a0et red\u00e9marrez\u00a0<strong>httpd<\/strong>. Ensuite, vous pourrez ouvrir\u00a0http:\/\/localhost\/content\/geometrixx\/en\/products.html.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Enfin, vous trouverez non seulement le fichier HTML mis en cache\u00a0<strong>products.html<\/strong>\u00a0dans le r\u00e9pertoire htdocs\/content\/geometrixx\/en, mais aussi le fichier products.html.h \u00e0 c\u00f4t\u00e9 du fichier HTML original\u00a0<strong>products.html<\/strong>. Ce fichier *.h contient les en-t\u00eates pour le fichier HTML mis en cache.<\/p>\n<\/div>\n<\/div>\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<h2 class=\"wp-block-heading\" id=\"summary\">R\u00e9sum\u00e9<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Vous pouvez rapidement activer la mise en cache en utilisant les param\u00e8tres initiaux suivants dans le fichier de configuration du dispatcher :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>d\u00e9finir les rendus ;<\/li>\n\n\n\n<li>d\u00e9finir les filtres ;<\/li>\n\n\n\n<li>d\u00e9finir le htdocs et les r\u00e8gles pour les sections de mise en cache ;<\/li>\n\n\n\n<li>d\u00e9finir les en-t\u00eates pour le stockage des en-t\u00eates HTTP.<\/li>\n<\/ul>\n<\/div>\n<\/div>\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<h2 class=\"wp-block-heading\">FAQ<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"how-does-aem-dispatcher-cache-work-\">Comment fonctionne le cache du dispatcher AEM ?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Une fois demand\u00e9, un document cacheable est v\u00e9rifi\u00e9 par le Dispatcher pour identifier si ce document existe dans le syst\u00e8me de fichiers du serveur web :<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si le document est mis en cache, le Dispatcher renvoie le fichier. Le Dispatcher demande le document \u00e0 l&rsquo;instance AEM s&rsquo;il n&rsquo;est pas mis en cache.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"what-is-cache-in-aem-\">Qu&rsquo;est-ce que le cache dans AEM ?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Le cache dans AEM est un composant qui stocke les donn\u00e9es de mani\u00e8re transparente afin que les futures requ\u00eates pour ces donn\u00e9es puissent \u00eatre servies plus rapidement.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"what-is-permission-sensitive-caching-in-aem-\">Qu&rsquo;est-ce que la mise en cache sensible aux permissions dans AEM ?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Le cache sensible aux permissions d&rsquo;AEM vous permet de mettre en cache des pages s\u00e9curis\u00e9es. Le dispatcher v\u00e9rifie les autorisations d&rsquo;acc\u00e8s de l&rsquo;utilisateur pour une page avant de livrer la page mise en cache.<\/p>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Renders Filtres Cache En-t\u00eates R\u00e9sum\u00e9 Voir aussi : La mise en cache est un facteur de performance cl\u00e9 [&hellip;]<\/p>\n","protected":false},"author":11,"featured_media":5015,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[159],"tags":[],"class_list":["post-23427","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-adobe-experience-manager"],"acf":{"cta":"Give Us a Call","phone":"+1 (438) 383-6878","meta-description":"Sachez quels param\u00e8tres du fichier de configuration du Dispatcher vous devez utiliser pour activer la mise en cache dans AEM, d\u00e9finir quelles ressources mettre en cache et comment les stocker pour acc\u00e9l\u00e9rer la vitesse de chargement des pages de votre site web."},"_links":{"self":[{"href":"https:\/\/axamit.com\/fr\/wp-json\/wp\/v2\/posts\/23427","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/axamit.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/axamit.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/axamit.com\/fr\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/axamit.com\/fr\/wp-json\/wp\/v2\/comments?post=23427"}],"version-history":[{"count":1,"href":"https:\/\/axamit.com\/fr\/wp-json\/wp\/v2\/posts\/23427\/revisions"}],"predecessor-version":[{"id":23428,"href":"https:\/\/axamit.com\/fr\/wp-json\/wp\/v2\/posts\/23427\/revisions\/23428"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/axamit.com\/fr\/wp-json\/wp\/v2\/media\/5015"}],"wp:attachment":[{"href":"https:\/\/axamit.com\/fr\/wp-json\/wp\/v2\/media?parent=23427"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/axamit.com\/fr\/wp-json\/wp\/v2\/categories?post=23427"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/axamit.com\/fr\/wp-json\/wp\/v2\/tags?post=23427"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}