Dans CQ, l’outil répartiteur est l’outil de mise en cache et de gestion du chargement d’Adobe. Les options de mise en cache dans CQ sont configurées via le fichier de configuration dispatcher.any. Pour un mécanisme de mise en cache puissant, le fichier Dispatcher.any fournit plusieurs options de configuration. Pour une description du répartiteur, référez-vous à Configuration du Répartiteur CQ.

Cet article traite des problèmes que vous pourriez rencontrer lorsque vous activez la mise en cache sur une instance CQ à l’aide du répartiteur.

Activation du débogage sur le répartiteur

Lorsque vous configurez le Dispatcher CQ, assurez-vous que le mécanisme de connexion du répartiteur est en place.

Pour le serveur Web Apache, assurez-vous que les lignes suivantes sont dans le fichier http.conf :

<IfModule disp_apache2.c>
DispatcherConfig conf/dispatcher.any
DispatcherLog logs/dispatcher.log

# log level for the dispatc her log
# 0 Errors
# 1 Warnings
# 2 lnfos
# 3 Debug
DispatcherLogLevel 3

# if turned to 1, the dispatcher looks like a normal module
#since build 5210, this setting has no eff ect , since it used to crash
# apache if set to 0.
DispatcherNoServerHeader 1

# if turned to 1, request to I are not handled by the dispatcher
# use the mod_alias t hen for the correct mapping
DispatcherDeclineRoot 0
</IfModule>

La ligne DispatcherLog logs/dispatcher.log indique le nom du fichier journal du répartiteur.

La ligne DispatcherLogLevel 3 indique le niveau du message à enregistrer.

Dès que vous redémarrez le serveur Web, le fichier dispatcher.log est créé avec des informations relatives à l’initialisation du répartiteur.

Vous pouvez changer le nom et l’emplacement du fichier journal en respectant l’emplacement du répertoire racine du serveur.

Avec la mise en cache du répartiteur activée, accédez à n’importe quelle page du site web CQ, puis ouvrez le fichier dispatcher.log. Vous voyez alors les lignes suivantes :

[Tue Oct 16 13:14:04 2012] [D] [1376(1532)] cachefile does not exist or is a directory: \Library\WebServer\cache\index.html
[Tue Oct 16 13:14:04 2012] [D] [1376(1532)] try to create new cachefile: \Library\WebServer\cache\index.html
[Tue Oct 16 13:14:04 2012] [D] [1376(1532)] cache-action for [/index.html]: CREATE

Remarque :

L’instruction cache-action du fichier de logs est un indicateur qui vous permet d’identifier le résultat de la dernière page appel.

Problème

Comment déboguer un problème qui fait que le contenu ne s’enregistre pas dans le cache du répartiteur

Les données de page du serveur web sont mises en cache à l’emplacement spécifié dans l’attribut /docroot de la section /cache de dispatcher.any. Lorsque vous identifiez que les informations de page spécifiques ne sont pas mises en cache, consultez dispatcher.log. Les données du dernier appel de page sont à la fin du journal.

Erreur « mise en cache désactivée en raison de la chaîne de requête » trouvée dans le journal

[Tue Oct 16 13:14:04 2012] [D] [1376(1532)] checking [/libs/cq/security/userinfo.json]
[Tue Oct 16 13:14:04 2012] [D] [1376(1532)] Caching disabled due to query string: cq_ck=1350373444666
[Tue Oct 16 13:14:04 2012] [D] [1376(1532)] cache-action for [/libs/cq/security/userinfo.json]: NONE

Les requêtes qui contiennent une chaîne de requête (telle que http://www.mysite.com/search?q=adobe) mènent à des sorties dynamiques qui dépendent de la chaîne de requête. Dans la plupart des cas, la sortie de demande de chaîne de requête ne doit pas être mise en cache.

Solution

Si certains paramètres de requête ne sont pas directement liés à la sortie, configurez le répartiteur pour ignorer les paramètres de chaîne de requête de la requête.

Dans la section ignoreUrlParams, spécifiez les paramètres de chaîne de requête à ignorer.

Dans cet exemple de configuration, les requêtes URL avec le paramètre de chaîne de requête « q » sont mises en cache.

/ignoreUrlParams
 {
 /0001 { /glob "*" /type "deny" }
 /0002 { /glob "q" /type "allow" }
 }

Pour la configuration ci-dessus, le répartiteur traite les requêtes suivantes comme étant identiques.

http://www.mysite.com/search?q=adobe
http://www.mysite.com/search?q=dispatcher
http://www.mysite.com/search

Erreur « aucun cache en raison de l’en-tête d’autorisation » trouvée dans le journal

[Tue Oct 16 13:39:17 2012] [D] [1376(1532)] checking [/content/geometrixx-outdoors/en/unlimited-blog.html]
[Tue Oct 16 13:39:17 2012] [D] [1376(1532)] no cache due to authorization header.
[Tue Oct 16 13:39:17 2012] [D] [1376(1532)] cache-action for [/content/geometrixx-outdoors/en/unlimited-blog.html]: NONE

Solution

Référez-vous à la discussion suivante dans le forum pour résoudre ce problème : Dispatcher serving, but not caching, CQ5 pages

Comment déboguer les fichiers cache non mis à jour ?

Le mécanisme de mise en cache CQ met à jour l’horodatage d’un fichier vide (spécifié par l’attribut /statfile dans dispatcher.log) pour invalider le cache. Ainsi, lorsqu’une page est répliquée, l’agent de purge du répartiteur envoie une requête au serveur web. Le Dispatcher reconnaît la requête et ouvre le fichier .stat. Il change ensuite 1 byte dans le fichier afin de mettre à jour l’horodatage. Cette modification annule la mémoire cache et entraîne la purge du cache.

Solution

Comment déboguer si rien ne fonctionne ?

Vous pouvez rencontrer un scénario où vos sites Web n’affichent que des pages vierges.

Erreur « Rejet du filtre » détecté dans le journal

[Tue Oct 16 13:47:18 2012] [D] [2880(1332)] cache-action for [/libs/wcm/core/content/siteadmin.infinity.json]: NONE
[Tue Oct 16 13:47:18 2012] [D] [2880(1532)] connected to render publish1 (127.0.0.1:4502)
[Tue Oct 16 13:47:18 2012] [D] [2880(1332)] Filter rejects GET /libs/wcm/core/content/siteadmin.infinity.json HTTP/1.1

Solution

La section du filtre de dispatcher.any définit les requêtes gérées par le Dispatcher.

Assurez-vous que le /type est défini sur « Autoriser » pour les pages et le contenu du site Web à rendre accessible.

Dans l’exemple ci-dessus, l’erreur est renvoyée pour le « siteadmin.infinity.json ».

Pour les lignes suivantes, à partir de la section /filtre du dispatcher.any, le type est défini sur "deny".

      # Deny content grabbing
      /0081 { /type "deny"  /glob "GET *.infinity.json*" }
      /0082 { /type "deny"  /glob "GET *.tidy.json*"     }
      /0083 { /type "deny"  /glob "GET *.sysview.xml*"   }
      /0084 { /type "deny"  /glob "GET *.docview.json*"  }
      /0085 { /type "deny"  /glob "GET *.docview.xml*"  }

Ce produit est distribué sous licence Creative Commons Attribution - Pas d’utilisation commerciale - Partage à l’identique 3.0 non transposé  Les publications Twitter™ et Facebook ne sont pas couvertes par les dispositions Creative Commons.

Mentions légales   |   Politique de confidentialité en ligne