Mise en mémoire cache dynamique

En général, la mise en cache améliore le temps de réponse et réduit la charge du système. Les techniques de mise en cache sont utilisées pour améliorer les performances des applications Internet. La plupart des techniques sont basées sur la mise en cache du contenu statique (contenu qui varie rarement) tel que les fichiers graphique et texte. Cependant, de nombreux sites Web dispensent du contenu dynamique, contenant des informations personnalisées ou des données qui changent plus fréquemment. La mise en mémoire cache du contenu dynamique nécessite des techniques de mise en cache plus sophistiquées, telles que celles fournies par la mémoire cache dynamique WebSphere Application Server, un service intégré pour la mise en cache et la dispense du contenu dynamique.

Le service de mise en mémoire cache dynamique comprend les fonctions suivantes :
  • Mémoire cache de résultat de page JSP et de servlet : pour mettre en cache l'intégralité des pages ou des fragments générés par un servlet ou une page JSP.
  • Mémoire cache de commande : pour mettre en cache des objets de commande.
  • Mémoire cache ESI (Edge Side Include) : pour mettre en cache, assembler et fournir des pages Web dynamiques à la frontière d'un réseau d'entreprise.
  • Prise en charge d'invalidation : pour s'assurer que le contenu de la mémoire cache est correct. L'invalidation peut être basée sur les règles, sur le temps, sur un groupe ou programmée.
  • Fonction de déchargement sur le disque : Pour activer la mise en cache de grandes quantités de données.

Le comportement du service de cache dynamique de WebSphere Application Server est spécifié par les règles de mise en cache définies par les éléments <cache-entry> dans les fichiers XML (cachespec.xml) de configuration de spécification de mémoire cache.

Lorsque le service de cache dynamique place des objets en mémoire cache, il les désigne via des chaînes d'identification uniques (ID de cache) générées en fonction des règles <cache-id> spécifiées dans les éléments <cache-entry>. Une fois qu'un objet doté d'un ID de cache particulier se trouve en mémoire cache, une demande concernant un objet ayant le même ID de cache est envoyée par la mémoire cache (hit en cache). Les règles <cache-id> définissent comment générer des ID de cache à partir des informations associées à une demande de serveur d'applications (pour exécuter un servlet, un fichier JSP ou une instruction). Cette définition inclut la façon dont des informations peuvent être obtenues à l'aide d'un programme à partir des objets CacheableCommand.

Les objets en cache sont supprimés de cette dernière en fonction des informations fournies dans leurs éléments <cache-entry>, tels que les éléments <timeout>, <priority> et <invalidation>.

Les éléments <timeout> et <priority> configurent les règles d'expiration et d'éviction. Lorsque la mémoire cache disponible est pleine, un algorithme de mise en cache LRU supprime les objets en cache dotés de la priorité la plus faible. L'algorithme peut également décharger des objets mis en cache avec une priorité inférieure sur le disque si la capacité de déchargement de disque est activée avant les objets qui ont une plus grande priorité.

Les éléments <dependency-id> et <invalidation> définissent des règles qui génèrent des ID de dépendance et des ID d'invalidation. Ensemble, ces ID précisent que certains objets doivent être retirés de la mémoire cache lorsque certaines demandes (telles que les demandes qui mettent à jour les informations en cache) sont traitées. Lorsqu'un objet est placé en mémoire cache, ses ID de dépendance générés sont associés à lui en mémoire cache. Lorsqu'une demande provoque la génération d'ID d'invalidation, tous les objets associés à ces ID d'invalidation sont supprimés de la mémoire cache.

L'élément <inactivity> sert à indiquer un délai TTL (Time-To-Live) de l'entrée de cache basé sur l'heure à laquelle l'entrée de cache a fait l'objet d'un accès pour la dernière fois. value représente la durée, exprimée en secondes, pendant laquelle l'entrée de cache doit être conservée dans le cache après le dernier hit en mémoire cache.

Le service de cache dynamique réagit aux modifications du fichier cachespec.xml. Lorsque le fichier est mis à jour, les anciennes stratégies sont remplacées. Les objets mis en cache à l'aide de l'ancien fichier de stratégie ne sont pas automatiquement invalidés à partir du cache. Ils sont réutilisés avec la nouvelle stratégie ou éliminés à partir du cache par son algorithme de remplacement.

HCL Commerce utilise la mise en cache d'instructions de WebSphere, de la même façon qu'avec MemberGroupsCacheCmdImpl ; toutefois, HCL Commerce ne prend pas en charge la mise en cache des instructions contenant des objets non sérialisables.

HCL Commerce Version 9.1.9.0 or laterLe composant ID DC_HclCacheSkipRemote demande à HCL Cache de ne pas utiliser le cache distant pour cette entrée, même si le cache est activé.

HCL Commerce Version 9.1.9.0 or laterLe composant ID DC_HclCacheSkipLocal demande à HCL Cache de ne pas utiliser le cache local pour cette entrée, même si le cache est activé.

Mémoire cache dynamique WebSphere Application Server

HCL Commerce fait appel au service de cache dynamique de WebSphere Application Server pour mettre en cache les servlets ou les fichiers JSP ainsi que les instructions provenant de l'interface de WebSphere Application Server, CacheableCommand. Le service de cache dynamique, la mise en cache de servlet et le déchargement sur le disque sont activés par défaut, pendant la création d'une instance de HCL Commerce.

Limites de la mise en cache dynamique

Si vous utilisez le fichier cachespec.xml pour activer l'invalidation, vous pouvez rencontrer le comportement suivant :
  • Lorsque vous créez une entrée de catalogue ou déplacez une entrée de catalogue d'une catégorie vers une autre dans le Centre de gestion, l'entrée de catalogue n'apparaît pas dans la vitrine.
  • Lorsque vous créez une catégorie dans le Centre de gestion, cette catégorie n'apparaît pas dans la vitrine.
  • Lorsque vous mettez à jour un objet enfant dans le Centre de gestion, l'entrée de cache d'objet parent n'est pas invalidée automatiquement. Par exemple, lorsque vous mettez à jour une entrée de catalogue dans le Centre de gestion, les mises à jour ne sont pas répercutées sur la page d'affichage de catégorie dans la vitrine.
Pour résoudre ces problèmes, invalidez manuellement le cache. Pour plus d'informations sur l'invalidation du cache, reportez-vous à la rubrique Retrait d'entrées de cache via le moniteur de mémoire cache.
Remarque : Cette limitation de fichier cachespec.xml ne s'applique qu'à votre environnement de production. Lorsque vous utilisez l'utilitaire stagingprop pour propager les mises à jour du catalogue à votre environnement de production et vous utilisez le fichier cachespec.xml pour permettre l'invalidation, les pages de magasin peuvent ne pas refléter les mises à jour. Pour résoudre les problèmes de cette limitation et afficher les mises à jour, invalidez le cache manuellement au sein de votre environnement de production.