Définition des stratégies d'invalidation dans cachespec.xml

Procédure

  1. Ouvrez le fichier cachespec.xml utilisé pour configurer les objets pouvant être mis en cache, situé dans le répertoire WEB-INF des archives WAR (Web Application Archive) ou des beans beans d'entreprise. Effectuez l'une des actions suivantes en fonction de la valeur de la classe utilisée.
    • Invalidation basée sur le Servlet
      Ajoutez les lignes de code suivantes au fichier cachespec.xml.
      <cache-entry>
              <class>servlet</class>
              <name>servlet_name</name>
              <invalidation>invalidation_id
                      <component id="" type="pathinfo">
                      ....
                      </component>
              </invalidation>
      </cache-entry>
      
      Dans le fichier exemple cachespec.xml précédent, notez les points suivants :
      <class>
      La valeur "servlet" indique que l'invalidation est déclenchée par un servlet.
      <nom>
      La valeur est le nom du servlet sur lequel l'invalidation va se dérouler.
      <invalidation>
      Elément utilisé pour identifier l'événement qui déclenche l'invalidation et les entrées de cache avec l'ID spécifié à invalider.
      component id
      ID tel qu'il s'affiche dans la définition d'entrée de cache pour le composant souhaité défini pour invalidation.
      pathinfo
      Dans HCL Commerce, toutes les requêtes de servlet passent par un servlet contrôleur unique qui est soit: com.ibm.commerce.struts.ECActionServlet.class (pour HCL Commerce version 9.0.0.x) ou com.ibm.commerce.struts.v2.ECActionServlet.class pour la version 9.0.x) ou com.ibm.commerce.tools.common.ToolsRequestServlet.class.

      Pour identifier un URI de requête unique, vous pouvez faire appel au type de composant "pathinfo" pour filtrer le nom pathinfo dans la requête.

    • Invalidation basée sur une instruction

      Ajoutez les lignes de code suivantes au fichier cachespec.xml.

      <cache-entry>              
          <class>command</class>
          <name>fully_qualified_class_name_of_the_command</name>
          <invalidation>productId
                 <component id="getCatentryId" type="method">
                     <required>true</required>
                 </component>
           </invalidation>
      </cache-entry>
      
      Dans le fichier exemple cachespec.xml précédent, notez les points suivants :
      <class>
      La valeur "command" indique que l'invalidation est déclenchée par une instruction.
      <nom>
      Contient le nom de chemin qualifié complet de l'instruction.
      N'oubliez pas les restrictions suivantes :
      • Seules les méthodes appelées par la commande qui renvoient les variables d'instance d'entrée peuvent être utilisées dans le composant (component) "method".
      • Toutes les méthodes utilisées pour la création des ID d'invalidation doivent être précisées dans l'interface de l'instruction et mises en oeuvre.
      • Le composant de type demande d'attributs ne peut pas être utilisé.
  2. Règles d'invalidation basées sur le délai d'expiration et la priorité. Ajoutez les lignes de code suivantes au fichier cachespec.xml. Dans l'élément <cache-id>.
    
    <cache-entry>
           .......
          <cache-id>
              <component >.......</component>
                <priority>priority_value</priority>
                   <timeout>time_in_cache</timeout>
                    <inactivity>time_inactive</inactivity>
          </cache-id> 
    </cache-entry> 
    
    Dans le fichier exemple cachespec.xml précédent, notez les points suivants :
    <priority>
    Permet de définir la priorité d'une entrée de cache dans la mémoire cache. Cette priorité est utilisée par l'algorithme d'ancienneté (LRU, Least Recently Used) du cache pour décider quelles entrées doivent être supprimées du cache lorsque celui-ci est à cours d'espace de stockage.
    <timeout>
    Le sous-élément timeout sert à indiquer une valeur absolue pour le délai TTL (Time-To-Live) de l'entrée de cache. La valeur représente la durée, exprimée en secondes, pendant laquelle l'entrée de cache doit être conservée. Les entrées de cache qui se trouvent en mémoire sont conservées indéfiniment, tant qu'elles restent en mémoire. Les entrées de cache enregistrées sur disques sont purgées si elles n'ont fait l'objet d'aucun accès au cours des dernières 24 heures.
    <inactivity>
    Le sous-é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. Il s'agit d'un sous-élément de l'élément cache-id. value où "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 accès en mémoire cache.

    Pour plus d'informations, voir cachespec.xml.

    Ce mécanisme est utile lorsqu'il n'est pas possible de définir des règles d'invalidation spécifiques ou des événements de déclenchement réglés pour supprimer les entrées de cache.