AEM Optimización de cachés del sitio

AEM La optimización del almacenamiento en caché dentro de la arquitectura de su es una de las formas más rápidas de obtener un gran aumento del rendimiento. AEM Este artículo se centra en explicar cómo optimizar las distintas cachés disponibles dentro de una arquitectura de.

Descripción description

Entorno

Adobe Experience Manager

Problemas/Síntomas

AEM ¿Cómo optimizar las cachés del sitio de la?

AEM Arquitectura y almacenamiento en caché de

AEM En todas las arquitecturas de la, el usuario encuentra varias capas de caché al visitar el sitio. AEM Hay 4 capas de caché que se deben tener en cuenta en una arquitectura de caché estándar. AEM Esto incluye las instancias del explorador web, la red de distribución de contenido (CDN), Dispatcher y la interfaz de usuario de.

screenshot_2018-03-25160541

Resolución resolution

A. Almacenamiento en caché del explorador

El primer nivel de caché que un usuario encuentra en una visita repetida al sitio es su propio explorador. El almacenamiento en caché a nivel de explorador se suele realizar mediante el Cache-Control: max-age=… respuesta encabezado. El max-age La configuración indica al explorador durante cuántos segundos debe almacenar el archivo en caché antes de intentar "revalidarlo" o solicitarlo de nuevo desde el sitio. Este concepto de caché max-age Normalmente, se denomina "Caducidad de la caché" o TTL ("Tiempo de vida").

Hay varias opciones (o "directivas") dentro de la variable Cache-Control encabezado que afectan a cómo se produce el almacenamiento en caché. Estas son algunas directivas comunes:

  1. private: la directiva privada del encabezado Cache-Control hace que el archivo solo se almacene en caché en el explorador, no en cachés intermedias como CDN. Un uso práctico de esta directiva sería si su página incluye contenido personalizado o específico del usuario.

    Ejemplo de uso: Cache-Control: max-age=300, private

  2. s-maxage: la directiva s-maxage del encabezado Cache-Control le permite establecer un TTL diferente para cachés compartidas como CDN. Cuando se establece este valor, el explorador utiliza lo que se establece en max-age y otras cachés respetan la configuración de s-maxage en su lugar.

    Ejemplo de uso: Cache-Control: max-age=600, s-maxage=300

Todos los exploradores modernos admiten el Cache-Control encabezado, sin embargo, algunos encabezados obsoletos existen desde HTTP/1.0 que aún puede tener un efecto en el almacenamiento en caché. Estos encabezados son Caduca y Pragma. Si no necesita admitir exploradores muy antiguos, no envíe esos encabezados de respuesta.

Además del almacenamiento en caché, la revalidación también es un concepto importante. La revalidación se basa en Última modificación(respuesta) / If-Modified-Since (solicitud) y los encabezados ETag (respuesta) / Si-Ninguno-Coincidencia Encabezados (solicitud).

Precaución al probar el explorador:

Al probar el almacenamiento en caché en Google Chrome, si está realizando pruebas sobre https y tiene un certificado autofirmado, no se almacenará en caché nada. Chrome no almacenará en caché las respuestas ni realizará la revalidación cuando haya un certificado que no sea de confianza o no sea válido.

Nota sobre Dispatcher:

AEM Hay un problema con la versión 4.2.3 y versiones anteriores de Dispatcher en el que la variable /enableTTL solo cachés que utilizan max-age Directiva. Esto significa que incluso cuando privado o s-maxage se establecen las directivas que seguiría almacenando en caché si max-age está configurado. Este problema se resuelve en Dispatcher 4.2.4 y versiones posteriores.

B. Almacenamiento en caché de CDN

A CDN o "red de distribución de contenido", es una red distribuida de servidores web diseñados para almacenar en caché y ofrecer contenido desde la ubicación más cercana a los usuarios. Esto reduce los saltos de red y la distancia desde el equipo del usuario al contenido, lo que reduce "Tiempo de ida y vuelta" (RTT). RTT es el tiempo que tarda el explorador en enviar una solicitud a su sitio y recibir una respuesta. La competencia en el espacio del proveedor de CDN ha hecho que las CDN sean muy rentables. Esto facilita la decisión de utilizar una CDN para el sitio. Si todavía no utiliza una CDN, debe incorporar definitivamente una CDN en su sitio.

Hay muchos proveedores de CDN, cada uno con diferentes características y configuraciones.

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

Las CDN almacenan en caché el contenido siguiendo reglas similares a las de los navegadores. Dependen de la Cache-Control HTTP respuesta encabezado y, por lo general, volver al Caduca encabezado si no Cache-Control se ha encontrado el encabezado.

La mayoría de las CDN ofrecen alguna forma de almacenar en déclencheur un vaciado manual de la caché.  En muchos casos, los vaciados de caché tienen cierto retraso (por ejemplo, 15 minutos) en cuanto a la propagación a todos los servidores Edge que tienen sus archivos.

Optimización del uso de CDN

Hay algunas cosas que debe hacer para asegurarse de que almacena en caché los archivos de forma óptima en la CDN:

  1. Utilice una CDN que admita stale-while-revalidate y stale-if-error directivas en la Cache-Control encabezado.

    • stale-while-revalidate : esta directiva indica a la CDN que proporcione la versión antigua (ya almacenada en caché) del archivo mientras recupera una nueva después de que el archivo de caché haya caducado.
    • stale-if-error : de forma similar, esta directiva indica a la CDN que proporcione la versión antigua (ya almacenada en caché) del archivo cuando el origen responda con un error durante la revalidación.
  2. GZip comprime las respuestas de todos los tipos de archivos que no estén precomprimidos.

    Debe hacerlo desde el nivel de Dispatcher. Esto garantizará que reduce el número de bytes enviados a la CDN. Las CDN suelen cargar los bytes transferidos, por lo que la compresión de las respuestas reduce los costes.

    • Habilitar la compresión GZip en el nivel de Dispatcher: Apache - usar mod_deflate. Tenga cuidado con el uso de mod_deflate de la variable. En determinados casos, el encabezado Vary puede hacer que la CDN y el explorador omitan el almacenamiento en caché por completo.

    • Microsoft IIS: uso Compresión dinámica.

    • No permita la compresión gzip de archivos grandes o archivos que ya estén comprimidos. Tenga en cuenta que la mayoría de los formatos de imagen y vídeo ya están precomprimidos. Comprimirlos sobre la marcha en el servidor web supone un coste muy elevado para el rendimiento.

      • En Apache, esto se puede hacer mediante la directiva AddOutputFilterByType: AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript
      • En IIS, esto se puede controlar mediante el < dynamicTypes> configuración.
    • Si su proveedor de CDN admite Edge-side Includes (ESI) y, a continuación, aproveche esta función. AEM Los componentes de la se pueden desglosar mediante ESI. Para ello, utilice Apache \[ Sling Dynamic Includes\] o implementar una solución personalizada. Resulta útil cuando tiene páginas bastante estáticas pero ofrece contenido más dinámico en algunas partes de la página. En estos casos, básicamente está dividiendo la página en varios archivos CDN. De este modo, puede almacenar en caché diferentes partes de la página durante diferentes períodos de tiempo.

Proveedores de CDN populares

Esta es una lista de algunos proveedores de CDN populares:

Hay varios más, cada uno con características diferentes.

Precaución:

Tenga cuidado con el Variar encabezado de respuesta. En algunos casos, Variar puede hacer que tanto la CDN como el explorador omitan el almacenamiento en caché por completo. Como regla general, evite añadir Variar excepto para Vary: Accept-Encoding (se aplica solo cuando la respuesta está comprimida en gzip). En otras palabras, si necesita "variar" el resultado de una respuesta, utilice una dirección URL diferente.

Por ejemplo, si tiene una versión diferente de HTML para móvil y escritorio, utilice una URL diferente. Esto permitirá que las CDN y los exploradores almacenen en caché de forma más eficaz.

AEM C. Almacenamiento en caché de Dispatcher

AEM Si la caché de la CDN ha caducado, la solicitud llegará a la caché de Dispatcher de. En este nivel hay muchas cosas que se pueden hacer para optimizar el almacenamiento en caché.

Dado que se trata de un tema más amplio, consulte este artículo para obtener más información sobre cómo optimizar la caché de dispatcher.

AEM D. Instancias de publicación de la

AEM En el nivel de la caché, hay algunas cosas que se deben hacer para optimizar las distintas capas de caché:

  1. AEM Establezca los siguientes encabezados de respuesta HTTP que no están configurados de forma predeterminada por el valor de la opción de configuración de la opción de respuesta de la interfaz de usuario.

    1. Cache-Control: max-age=… - Para establecer este encabezado, ACS Commons - TTL de Dispatcher podría utilizarse, o podría implementar código personalizado para establecerlo.
    2. Última modificación : Si el contenido de la página es relativamente estático, como un artículo, puede establecer su encabezado de última modificación en la fecha/hora cq:lastModified (última vez que se modificó el artículo). Sin embargo, si la página es dinámica con los resultados de la consulta JCR contenidos en el contenido del componente, lo mejor sería configurarla para que utilice la fecha/hora actual.
    3. ETag - Si decide utilizar este en lugar de Última modificación, puede escribir un ReplicationEventListener que escucha las activaciones de la página y genera un hash md5 del contenido de la página. Esto se puede establecer como una propiedad en el nodo jcr:content de la página en la instancia de autor. Cuando las páginas se duplican, se envía a las instancias de publicación. Para los componentes de página con contenido relativamente estático, esto podría funcionar correctamente, pero si la página es algo dinámica o hace referencia a mucho contenido, ETag tendría que omitirse (o calcularse).
  2. Si el sitio tiene contenido personalizado/dinámico:

    1. Uso Apache Sling Dynamic Includes para dividir el contenido de modo que diferentes partes de la página se puedan almacenar en caché durante diferentes períodos de tiempo.

      1. El almacenamiento en caché se puede realizar con las siguientes tecnologías:

        • Inclusiones del lado del borde (ESI) en la CDN
        • Inclusiones del lado del servidor (SSI) en el servidor web
        • AJAX Javascript y XML asíncronos () en el explorador
      2. Los componentes de la página se pueden dividir en solicitudes independientes que se pueden almacenar en caché durante diferentes períodos de tiempo. Las partes de la página que son relativamente estáticas se pueden almacenar en caché durante períodos de tiempo mucho más largos.

    2. Considere utilizar el Función de caché HTTP de ACS Commons.

  3. Optimizar bibliotecas de cliente.

    1. Habilitar la minificación en las bibliotecas del cliente.

    2. Si los archivos de la biblioteca del cliente están preminimizados, desactive la minificación en esa biblioteca del cliente. Edite el nodo cq

      1. Establezca la propiedad jsProcessor de tipo String[ ] con valor min:none
      2. y establezca la propiedad cssProcessor de tipo String[ ] con valor min:none
      3. Ver más detalles, aquí.
    3. Incrustar bibliotecas de cliente para minimizar y reducir los archivos js y css.

    4. Implementación versiones-clientlibs de ACS Commons para permitir que CDN y Dispatcher almacenen en caché archivos JS y CSS durante períodos de tiempo más largos.

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