¿Cómo optimizar la caché de Dispatcher?

Última actualización: 2023-11-29

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

Descripción

Entorno

Adobe Experience Manager

Problemas/Síntomas

AEM Este artículo se centra en las últimas optimizaciones del Dispatcher de y en cómo aprovecharlas mejor. AEM El Dispatcher de es un almacenamiento en caché proxy inverso servidor diseñado para su uso 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, la variable módulo de dispatcher compatible en Apache HTTP Server, Microsoft IIS e iPlanet.

Resolución

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

AEM En el nivel más básico, el Dispatcher de 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 detalles sobre Dispatcher:

  1. Cómo funciona Dispatcher y cómo instalarlo.
  2. Opciones de configuración disponibles en Dispatcher.
  3. Seminario web sobre el funcionamiento de Dispatcher. Tenga en cuenta que parte de la información de la presentación se basa en versiones antiguas de Dispatcher.
  4. Sesión de seminario web de Gems sobre las características de Dispatcher, el uso de CDN y la seguridad.
  5. Sesión de Gems sobre las nuevas características de Dispatcher (después de la v4.1.9).

Optimizar la caché de Dispatcher

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

  1. Almacénelo casi todo en caché - Esto significa almacenar en caché cualquier contenido que los usuarios solicitarían más de una vez.

  2. Almacenar en caché contenido personalizado durante diferentes periodos de tiempo - Si su sitio tiene contenido personalizado, considere la posibilidad de utilizar Apache Sling Dynamic Includes AEM en la aplicación de la para aprovechar Ajax (llamadas asíncronas de JavaScript y XML en el nivel del explorador), 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 períodos de tiempo.

  3. Nunca borre la caché de Dispatcher en uno activo. Si borra la caché cuando Dispatcher está activo, causará una avalancha masiva de peticiones que regresarán a AEM.  Debido a esto, la caché de Dispatcher nunca debe borrarse en un Dispatcher activo.

  4. Prepare la caché : Antes de eliminar la caché de Dispatcher, extraiga 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 ponerlo en el equilibrador de carga.

  5. Páginas de error de caché - Aproveche el DispatcherPassError 1 (Específico 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 archivos excepto los precomprimidos : En El Servidor Web Apache, mod_deflate podría utilizarse, pero asegúrese de que Vary: User-Agent encabezado no está configurado.  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. Activar /serveStaleOnError en la configuración /cache AEM : sirva el archivo de caché antiguo cuando las instancias de la aplicación estén sirviendo errores.

  8. Añadir /gracePeriod a la configuración /cache : defina el número de segundos que un recurso obsoleto e invalidado automáticamente 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. Almacenar en caché los encabezados de respuesta Cache-Control y Last-Modified - Utilice el /headers para almacenar en caché los encabezados de respuesta HTTP Cache-Control y Última modificación (y/o ETag AEM encabezado si lo envía desde el punto de vista de la dirección de envío (desde la dirección de envío).  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.  Tenga en cuenta que cuando haga esto tendrá que empezar a enviar las cabeceras desde su aplicación AEM.

  11. Almacenar en caché el contenido durante el mayor tiempo posible y AEM reducir las solicitudes que vuelven a la fase de : 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 establecer Cache-Control: max-age=… para almacenar en caché los archivos el mayor tiempo posible.  Vea a continuación los detalles sobre este tema.

Uso de TTL

A partir de la versión de Dispatcher 4.1.11, /enableTTL 1 se puede establecer en la configuración del archivo .any.  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 primaria 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, puede deshabilitar con seguridad los 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 Cache-Control encabezado y Última modificación para todas las solicitudes en las que aún no esté establecido.
  2. Instale Dispatcher 4.1.11 o posterior.
  3. Establecer /enableTTL 1 en la configuración de granja .any del sitio.
  4. Configure las variables /headers para almacenar en caché el Cache-Control y Última modificación encabezados.
  5. Reinicie el servidor web.

II. Desactivar 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 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 del autor:

Ahora que los agentes de vaciado están desactivados, dependería totalmente de Cache-Control encabezado para controlar cuándo se actualiza el contenido en Dispatcher.  Todavía puede permitir 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 de agente, configure Déclencheur =>  Ignorar predeterminado opción a activada. 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 deben tener activada una función llamada vaciado de recuperación.

Para habilitar el vaciado de recuperación 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 gestor 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 petición como parámetros que indican a Dispatcher qué rutas debe recuperar.  Puede añadir 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 borrar.

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.

En esta página