¿Cómo optimizar la caché de Dispatcher?

Este artículo ofrece instrucciones detalladas sobre las diferentes formas de optimizar la caché de Dispatcher. También se describen los pasos para habilitar las invalidaciones del estilo TTL ("Time to Live" o caducidad), deshabilitar los agentes de vaciado de Dispatcher, recuperar el vaciado de Dispatcher, entre otros.

Descripción description

Entorno

Adobe Experience Manager

Problemas/Síntomas

AEM Este artículo se centra en las últimas optimizaciones de la Dispatcher de y en cómo aprovecharlas mejor. AEM El Dispatcher es un servidor de almacenamiento en caché proxy inverso diseñado para usarse con Adobe Experience Manager. Se puede instalar y ejecutar como un módulo dentro de un software de servidor web existente. En el momento de escribir este artículo, el módulo Dispatcher es compatible en Apache HTTP Server, Microsoft IIS e iPlanet.

Resolución resolution

¿Cómo funciona el almacenamiento en caché de Dispatcher?

AEM En el nivel más básico, la instancia de Dispatcher es un proxy inverso que funciona realizando el almacenamiento en caché, el vaciado y la invalidación de la caché.

Consulte los vínculos relacionados para obtener más información sobre Dispatcher:

Optimizando la caché de Dispatcher

Estas son algunas formas de optimizar la caché de Dispatcher:

  1. Almacene en caché casi todo: esto significa almacenar en caché cualquier contenido que los usuarios solicitarían más de una vez.

  2. AEM Almacene en caché el contenido personalizado durante diferentes periodos de tiempo. Si su sitio tiene contenido personalizado, considere la posibilidad de usar Apache Sling Dynamic Includes en su aplicación de la para aprovechar Ajax (llamadas asincrónicas de JavaScript y XML en el nivel del navegador), SSI (Server Side Includes en el nivel del servidor web) y ESI (Edge-side Includes en el nivel de la CDN) para almacenar en caché diferentes partes de la página durante diferentes periodos de tiempo.

  3. Nunca borres la memoria caché de Dispatcher en un Dispatcher activo. Si un Dispatcher AEM está sirviendo contenido en vivo y borras la memoria caché, causará una avalancha masiva de peticiones que volverán a la memoria caché de.  Debido a esto, la caché de Dispatcher nunca debe eliminarse en un Dispatcher activo.

  4. Prepare la caché - Antes de eliminar la caché de Dispatcher, saque Dispatcher de su equilibrador de carga, elimine la caché y, a continuación, ejecute una herramienta de rastreo web para almacenar los archivos en la caché de Dispatcher antes de ponerla en el equilibrador de carga.

  5. Páginas de error en caché - Aproveche la directiva DispatcherPassError 1 (específica del servidor web Apache) para servir páginas de error como las 404 desde la caché de Dispatcher.

  6. GZip comprime todos los tipos de archivo excepto los que están precomprimidos - En el servidor web Apache, se podría usar mod_deflate, pero asegúrese de que Vary: User-Agent header no está establecido.  En Microsoft IIS, use la compresión dinámica.

    Ejemplo de configuración de Apache (que especifica solo ciertos tipos de contenido para evitar tipos de archivos precomprimidos):

    AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript

  7. AEM Habilitar /serveStaleOnError en la configuración de /cache - Proporcione el archivo de caché antiguo cuando las instancias de la muestren errores.

  8. Agregar /gracePeriod a la configuración de /cache: defina el número de segundos que un recurso obsoleto y autoinvalidado se puede seguir usando desde la caché después del último evento de publicación de contenido ("activación").  Esto reduce el número de peticiones que vuelven a las instancias de publicación durante una actividad de publicación de contenidos de gran envergadura, como una "activación del árbol".

  9. Agregar reglas a /ignoreUrlParams: ignore los parámetros de cadena de consulta que no sean necesarios o que la aplicación no utilice.  Esto permite el almacenamiento en caché de las URLs incluso cuando haya una cadena de consulta.

  10. AEM Almacene en caché los encabezados de respuesta Cache-Control y Last-Modified. Use la configuración /headers para almacenar en caché los encabezados de respuesta HTTP Cache-Control y Last-Modified (y/o ETag si lo envía desde).  Esto ayuda a simplificar y optimizar el almacenamiento en caché a nivel de la CDN y del navegador.  El almacenamiento en caché de estas cabeceras hace que solo AEM establezca las cabeceras, no el propio servidor web.  AEM Tenga en cuenta que cuando haga esto tendrá que empezar a enviar los encabezados desde la aplicación de la.

  11. AEM Almacene el contenido durante el mayor tiempo posible y reduzca las solicitudes que vuelven a la fase de almacenamiento en caché - Optimice las solicitudes de vaciado habilitando el vaciado de recuperación en todos los agentes de vaciado. Consulte la siguiente sección titulada Vaciado de recuperación de Dispatcher. O use /enableTTL y establezca el encabezado Cache-Control: max-age=… para almacenar archivos en caché el mayor tiempo posible.  Vea a continuación los detalles sobre este tema.

Usando TTL

A partir de la versión de Dispatcher 4.1.11, /enableTTL 1 se puede establecer en cualquier configuración de archivo.  Esta configuración hace que Dispatcher respete las caducidades de la caché establecidas en la cabecera de respuesta HTTP Cache-Control.  Es decir, Dispatcher funcionará de forma similar a una CDN en la que la forma principal de invalidación de la caché se produce cuando los archivos caducan.  Una vez que implemente esto y comience a enviar Cache-Control: max-age=… AEM para todas las respuestas de los usuarios, puede deshabilitar de forma segura sus agentes de vaciado de Dispatcher en las instancias de publicación.

Después de deshabilitar los agentes de vaciado en las instancias de publicación, es posible que aún desee poder vaciar la caché de Dispatcher.  En ese caso, puede usar ACS Commons - Interfaz de usuario de vaciado de Dispatcher.  Esta herramienta se instala en la instancia de autor.  Le ofrece a los usuarios una interfaz en la que pueden realizar peticiones manuales de vaciado de caché.

I. Pasos para habilitar las invalidaciones del estilo TTL ("Time to Live" o caducidad):

  1. AEM Modifique el código fuente en la aplicación de la para enviar el encabezado Cache-Control y Last-Modified para todas las solicitudes en las que aún no esté establecido.
  2. Instale Dispatcher 4.1.11 o posterior.
  3. Establezca /enableTTL 1 en cualquier configuración de granja del sitio.
  4. Establezca la configuración /headers para almacenar en caché los encabezados Cache-Control y Last-Modified.
  5. Reinicie el servidor web.

II. Deshabilitar los agentes de vaciado de Dispatcher en las instancias de publicación:

Dispatcher utilizará ahora el encabezado Cache-Control para controlar la invalidación de los archivos de la caché.  Dado que este es el caso, ya no es necesario vaciar Dispatcher de las instancias de publicación.

  1. Vaya a /etc/replication/agents.publish.html en cada instancia de publicación.
  2. Vaya a la configuración de cada agente de vaciado y desactive el agente.

III. Permitir las solicitudes de vaciado manual de Dispatcher desde la instancia de autor:

Ahora que los agentes de vaciado están deshabilitados, dependería totalmente del encabezado Cache-Control para controlar cuándo se actualiza el contenido en Dispatcher.  Puede seguir permitiendo que los usuarios realicen vaciados manuales de la caché de Dispatcher:

  1. Instalar ACS Commons - Interfaz de usuario de vaciado de Dispatcher en la instancia del autor.
  2. Configure los agentes de vaciado en la instancia de autor.
  3. En cada una de las configuraciones del agente, establezca Déclencheur =>   Ignorar opción predeterminada para habilitar. Esta opción hace que los agentes de vaciado ignoren cuando los usuarios hacen clic en (Des)publicar o (Des)activar en la interfaz de usuario de AEM.

Vaciado de recuperación de Dispatcher

Para optimizar las solicitudes de vaciado de Dispatcher, todos los agentes de vaciado de Dispatcher deben tener activada una función llamada vaciado de recuperación.

Para habilitar la recuperación del vaciado de Dispatcher, haga lo siguiente:

  1. Vaya a http://aemhost:port/crx/packmgr/index.jsp y entre como administrador.

  2. Descargue el paquete desde aquí.

  3. Cargue e instale el paquete en el administrador de paquetes.

  4. Vaya a la configuración de su agente de vaciado de Dispatcher. Por ejemplo  /etc/replication/agents.author/flush.html

  5. Haga clic en Editar

  6. Configure lo siguiente

    • Tipo de serialización = Vaciado de recuperación de Dispatcher
    • Extendido =>   Método HTTP = POST
  7. Haga clic en Guardar

Nota: El paquete instalado arriba solo es un ejemplo básico.  Para personalizar y optimizar el vaciado de recuperación puede modificar la lista de URI que envía.  Es de código abierto y se puede encontrar aquí.  El código añade una lista de URI al cuerpo de la solicitud como parámetros que indican a Dispatcher qué rutas debe recuperar.  Puede agregar más rutas según los requisitos de su aplicación para optimizar las capacidades de almacenamiento en caché de su sitio.

Explicación detallada del vaciado de recuperación

Normalmente, un vaciado de Dispatcher funciona eliminando archivos:

  1. Toque los archivos .stat.
  2. Elimine /content/foo.*
  3. Eliminar /content/foo/_jcr_content

Debido a que los archivos se eliminan en el paso 2, la próxima vez que un usuario solicite un archivo como /content/foo.html o /content/foo.json, mientras el archivo se está "recuperando", las solicitudes posteriores para el mismo archivo también se enviarían a las instancias de publicación hasta que el archivo se almacene en caché.  En el caso de respuestas lentas o páginas con mucho tráfico, como las páginas de inicio, esto puede provocar una inundación del nivel de instancia de publicación.

Para resolver este problema, habilite una función de Dispatcher llamada "recuperación".  Esta función le permite enviar una lista de URI que Dispatcher debe "recuperar" de forma proactiva y reemplazar en lugar de eliminar.

Consulte el 22:41-27:05 en la grabación de esta presentación para ver una demostración de cómo funciona y cómo configurarlo.

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f