Almacenamiento en memoria caché dinámica

En general, el almacenamiento en memoria caché mejora el tiempo de respuesta y reduce la carga del sistema. Las técnicas de almacenamiento en memoria caché se utilizan para mejorar el rendimiento de aplicaciones de World Wide Web de Internet. La mayoría de las técnicas almacenan en memoria caché contenido estático (contenido que raramente cambia), por ejemplo archivos de gráficos y texto. Sin embargo, muchos sitios web sirven contenido dinámico, que contiene información personalizada o datos que cambian más frecuentemente. El contenido dinámico de memoria caché necesita técnicas de almacenamiento en memoria caché más sofisticadas, por ejemplos las proporcionadas por la memoria caché dinámica de WebSphere Application Server, un servicio incorporado para almacenar en memoria caché y servir contenido dinámico.

El servicio de memoria caché dinámica incluye las características siguientes:
  • Memoria caché de resultado de servlet y JSP: Para almacenar en memoria caché páginas enteras o fragmentos generados por un servlet o una página JSP.
  • Memoria caché de mandato: Para almacenar en memoria caché objetos de mandato.
  • Almacenamiento en memoria caché del Edge Side Include (ESI): Para almacenar en memoria caché, ensamblar y entregar páginas web dinámicas en el borde de una red de empresa.
  • Soporte de invalidación: Para asegurar que el contenido de la memoria caché es correcto. La invalidación puede estar basada en normas, basada en tiempo, basada en grupos o programática.
  • Soporte de replicación: Para habilitar el uso compartido y la replicación de memoria caché entre varios servidores.
  • Capacidad de descarga del disco: Para habilitar el almacenamiento en memoria caché de grandes cantidades de datos y para conservar el contenido de memoria caché mientras el servidor de aplicaciones se detiene y se reinicia.
    Nota: Después de reiniciar el servidor de aplicaciones y de restaurar la base de datos, se recomienda borrar la memoria caché de disco utilizando el supervisor de memoria caché. Borre la memoria caché de disco para asegurar que se elimina la información que no es válida para la nueva base de datos. Utilice el supervisor de memoria caché para borrar la memoria caché o, alternativamente, utilice el siguiente URL: http://host_name/path/DynaCacheInvalidation?clear=true. Para obtener más información, consulte URL DynaCacheInvalidation.

El comportamiento de memoria caché del servicio de memoria caché dinámica de WebSphere Application Server lo especifican las políticas de memoria caché definidas por los elementos <cache-entry> en los archivos XML (cachespec.xml) de configuración de especificación de memoria caché.

A medida que el servicio de memoria caché dinámica coloca los objetos en la memoria caché, etiqueta los objetos con un identificador exclusivo (ID de memoria caché) que se crea de acuerdo con las reglas de <cache-id> especificadas en los elementos <cache-entry>. Una vez que un objeto con un ID de memoria caché determinado está en la memoria caché, se atiende desde la memoria caché una petición subsiguiente de un objeto con el mismo ID de memoria caché (un "hit" de memoria caché) Las reglas de <cache-id> definen cómo crear los ID de memoria caché a partir de la información asociada con una solicitud de servidor de aplicaciones (para ejecutar un servlet, una JSP o un mandato). Esta definición incluye cómo se puede obtener información por programa a partir de objetos CacheableCommand.

Los objetos en memoria caché se eliminan de la memoria caché de acuerdo con la información proporcionada en los elementos <cache-entry>, tales como los elementos <timeout>, <priority> y <invalidation>.

Los elementos <timeout> y <priorit> configuran las políticas de caducidad y exclusión. Cuando la memoria caché disponible está llena, un algoritmo de memoria caché utilizado menos recientemente (LRU) elimina los objetos en memoria caché con prioridad más baja. El algoritmo también puede descargar objetos almacenados en memoria caché con prioridad más baja en disco si se ha habilitado antes que los que tienen una prioridad más alta.

Los elementos <dependency-id> y <invalidation> definen las reglas que generan los ID de dependencia y los ID de invalidación. juntos especifican que determinados objetos se deben eliminar de la memoria caché cuando se procesan determinadas solicitudes (por ejemplo las que actualizan la información en memoria caché). Cuando se almacena en memoria caché un objeto, los ID de dependencia generados se asocian con él en la memoria caché. Cuando una solicitud hace que se generen ID de invalidación, todos los objetos que están asociados con esos ID de invalidación se eliminan de la memoria caché.

El elemento <inactivity> se utiliza para especificar un valor de tiempo de vida (TTL) para la entrada de memoria caché que se basa en la última vez en que se ha accedido a la entrada de memoria caché. El value es la cantidad de tiempo, en segundos, durante el cual se debe conservar la entrada de memoria caché en la memoria caché después del último hit a la memoria caché.

El servicio de memoria caché dinámica responde a los cambios en el archivo cachespec.xml. Cuando el archivo se actualiza, se sustituyen las políticas anteriores. Los objetos que se han almacenado en memoria caché mediante el archivo de política anterior no se invalidan automáticamente de la memoria caché. Los objetos se reutilizan con la nueva política o se eliminan de la memoria caché mediante el algoritmo de sustitución.

HCL Commerce utiliza el almacenamiento en memoria caché de mandatos de WebSphere internamente, por ejemplo con MemberGroupsCacheCmdImpl en el filtro de memoria caché anterior; sin embargo, HCL Commerce no soporta el almacenamiento en memoria caché de mandatos que contienen objetos no serializables.

WebSphere Application Server memoria caché dinámica

HCL Commerce utiliza el servicio de memoria caché dinámica de WebSphere Application Server para almacenar en memoria caché servlets o archivos JSP y mandatos que se extienden de la interfaz CacheableCommand de WebSphere Application Server. El servicio de memoria caché dinámica, el almacenamiento en memoria caché de servlets y la descarga de disco se habilitan de forma predeterminada, durante la creación de una instancia de HCL Commerce.

Límites del almacenamiento en memoria caché dinámica

Si utiliza el archivocachespec.xml para habilitar la invalidación, es posible que encuentre el siguiente comportamiento:
  • Al crear una entrada de catálogo o mover una entrada de catálogo de una categoría a otra en el Centro de gestión, la entrada de catálogo no aparecerá en el escaparate.
  • Al crear una categoría en el Centro de gestión, la categoría no aparecerá en el escaparate.
  • Al actualizar un objeto hijo en el Centro de gestión, la entrada de memoria caché de objeto padre no se invalida automáticamente. Por ejemplo, al actualizar una entrada de catálogo en el Centro de gestión, la página de visualización de categoría no refleja las actualizaciones en el escaparate.
Para resolver estos problemas, invalide manualmente la memoria caché. Para obtener más información sobre la invalidación de la memoria caché, consulte Eliminar entradas de memoria caché mediante el Supervisor de memoria caché.
Nota: Esta limitación de archivo solo se aplica a cachespec.xml en su entorno de producción. Cuando se utiliza el programa de utilidad stagingprop para propagar actualizaciones de catálogo en el entorno de producción y se utiliza el archivo cachespec.xml para habilitar la invalidación, las páginas de tienda no reflejan las actualizaciones.cachespec.xml Para resolver los problemas de esta limitación y visualizan las actualizaciones, invalide la memoria caché manualmente en el entorno de producción.