En CQ, Dispatcher es la herramienta de almacenamiento en caché y equilibrio de carga de Adobe. Las opciones de almacenamiento en caché en CQ se configuran a través del archivo de configuración dispatcher.any. Para permitir un mecanismo de caché robusto, el archivo Dispatcher.any proporciona varias opciones de configuración. Para una descripción de Dispatcher, ver la documentación sobre CQ Dispatcher.

Este artículo cubre los problemas a los que puede enfrentarse cuando habilita el almacenamiento en caché en una instancia de CQ usando Dispatcher.

Habilitar la depuración en Dispatcher

Cuando configure CQ Dispatcher, asegúrese de que el mecanismo de registro de Dispatcher esté en su lugar.

Para el servidor web Apache, asegúrese de que las siguientes líneas están en el archivo 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 línea, DispatcherLog logs/dispatcher.log indica el nombre del archivo de registro de Dispatcher.

La línea DispatcherLogLevel 3 indica el nivel de mensajes a registrar.

Tan pronto como reinicie el servidor web, se creará el archivo dispatcher.log con información sobre la inicialización de Dispatcher.

Puede cambiar el nombre y la ubicación del archivo de registro con respecto al directorio raíz del servidor web.

Con la caché de Dispatcher habilitada, vaya a cualquier página de su sitio web de CQ; luego, abra dispatcher.log. Verá las siguientes líneas:

[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

Nota:

La declaración de acción de caché en el archivo de registro es un indicador que puede utilizar para identificar el resultado de la última llamada de página.

Problema

¿Cómo depurar un problema en el que no se guarda ningún contenido en la caché de Dispatcher?

Los datos de la página del servidor web se almacenan en caché en la ubicación especificada en el atributo /docroot de la sección /cache en el dispatcher.any. Cuando identifique que la información específica de la página no está siendo almacenada en caché, vaya a dispatcher.log. Al final del registro hay entradas para la última llamada de página.

En el registro se encuentra el error "Caché deshabilitada debido a la cadena de consulta".

[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

Las solicitudes que contienen una cadena de consulta (como http://www.mysite.com/search?q=adobe) conducen a una salida dinámica que depende de la cadena de consulta. En la mayoría de los casos, el resultado de la solicitud de cadena de consulta no debe almacenarse en caché.

Solución

Si determina que algunos parámetros de consulta no están directamente relacionados con la salida, configure Dispatcher para que ignore los parámetros de la cadena de consulta de la solicitud.

En la sección ignoreUrlParams, especifique los parámetros de la cadena de consulta que desea ignorar.

En este ejemplo de configuración, las peticiones URL con el parámetro de cadena de consulta "q" se almacenan en caché.

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

Para la configuración anterior, Dispatcher trata las siguientes órdenes como idénticas.

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

Error "sin caché debido al encabezado de autorización" encontrado en el registro

[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

Solución

Vea la siguiente discusión en el foro para una resolución de este tema: Dispatcher sirve, pero no almacena en caché, páginas CQ5

¿Cómo depuro archivos de caché que no se actualizan?

El mecanismo de caché de CQ actualiza la marca de tiempo de un archivo vacío (especificado por el atributo /statfile en dispatcher.log) para invalidar la caché. Así que cuando se replica una página, el agente de vaciado de Dispatcher envía una solicitud al servidor web. Dispatcher reconoce la solicitud y abre el archivo .stat. Luego, cambia 1 byte en el archivo para actualizar la marca de tiempo. Este cambio invalida la caché y hace que Dispatcher la limpie.

Solución

¿Cómo hago una depuración si no funciona nada?

Podría encontrarse con un escenario en el que sus sitios web solo muestran páginas en blanco.

Error "Rechazos de filtro" encontrado en el registro

[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

Solución

La sección de filtro de dispatcher.any define las solicitudes que gestiona Dispatcher.

Asegúrese de que el /tipo está configurado para "permitir" que las páginas y el contenido del sitio web estén disponibles para su visualización.

En el ejemplo anterior, el error es lanzado para el "siteadmin.infinity.json."

Para las siguientes líneas de la sección /filters de dispatcher.any, el tipo está configurado para rechazar.

      # 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*"  }

Esta obra está autorizada con arreglo a la licencia de Reconocimiento-NoComercial-CompartirIgual 3.0 Unported de Creative Commons.  Los términos de Creative Commons no cubren las publicaciones en Twitter™ y Facebook.

Avisos legales   |   Política de privacidad en línea