Mise en cache et invalidation de l'agencement de Commerce Composer

Le JSP d'affichage de page est le principal JSP de la solution Commerce Composer et il est mappé à une vue dans views-ext.xml. Il est responsable de la récupération des détails d'agencement pour chaque requête de page à partir de la structure Commerce Composer. La vitrine du magasin contient des JSP d'affichage de page pour des types de pages individuels, tels que les pages de catégorie, de produit et de contenu. Dans certaines instances, les agencements récupérés peuvent être mis en cache pour accroître les performances du magasin.
Un JSP d'affichage de page émet une requête à la structure Commerce Composer pour identifier et générer un agencement efficace basé sur le type objetid et pageGroup transmis. Voici quelques exemples :
  • productId = 10001, pageGroup = Product
  • categoryId = 10002, pageGroup = Category

L'agencement qui en résulte peut être mis en cache automatiquement si com.ibm.commerce.pagelayout.cache.PageDesignMetaDataGenerator détermine que l'agencement efficace est le même pour tous les clients. L'activité d'agencement est évaluée par le cadre d'activité marketing, et si elle est déterminée comme étant statique, l'agencement peut être mis en cache.

Selon que l'agencement individuel est mis en cache, PageDesignMetaDataGenerator modifie l'entrée du JSP d'affichage de la page dans le fichier de configuration cachespec.xml.

Si la page ne doit pas être mise en cache, la propriété do-not-cache est définie sur true.

Si la page doit être mise en cache, la propriété do-not-cache est définie sur false. En outre, PageDesignMetaDataGenerator ajoute les ID de dépendance requis à l'entrée de cache. Ces ID de dépendance aident à l'invalidation de l'agencement mis en cache lorsque l'agencement est basculé ou si l'agencement est modifié.
ID de dépendance Description

emsName:name

Chaque emplacement e-marketing d'agencement est évalué par le cadre d'activité marketing pour déterminer l'agencement, et est ajouté comme une dépendance. Si un autre agencement est associé à cet objectId et à ce pageGroup, cet ID de dépendance déclenche une invalidation du cache.

pageLayoutId:layoutId

Un ID de dépendance unique est généré à partir d'une balise dans le JSP d'agencement. Chaque agencement doit inclure cette balise dans son JSP au format suivant :
<wcpgl:pageLayoutCache pageLayoutId="${pageDesign.layoutID}"/>

Si l'agencement associé est lui-même modifié par l'utilisateur professionnel, cet ID de dépendance déclenche une invalidation du cache.

Si l'agencement n'est pas mis en cache, son contenu peut toujours être mis en cache indépendamment sous forme de fragments. Pour plus de détails, voir Mise en cache et invalidation des widgets.

Voici un exemple d'entrée de cache pour l'agencement ProductDisplay. Reportez-vous au fichier de configuration cachespec.xml pour plus de détails et d'exemples.
<cache-entry>
		<class>servlet</class>
		<name>com.ibm.commerce.store.servlet.StoreDispatcherServlet.class</name>

<!-- Displays catentry details using either ProductDisplay.jsp or BundleDisplay.jsp or PackageDisplay.jsp 
The purpose of ProductDisplay command is to retrieve the configured display Page for the specified Product/Bundle/Package/Item in in the specified catalog. 
That display page will in turn be launched to display the catentry information. It looks at DISPENTREL table to get the JSP pages to display the product. -->

	<cache-id>
			<component id="" type="pathinfo">
				<required>true</required>
				<value>/ProductDisplay</value>
			</component>
			<component id="storeId" type="parameter">
				<required>true</required>
			</component>
			……
			……
			<component id="productId" type="parameter"> 
				<required>true</required>
			</component>
			<component id="categoryId" type="parameter">
				<required>false</required>
			</component>
			<metadatagenerator>com.ibm.commerce.pagelayout.cache.PageDesignMetaDataGenerator</metadatagenerator>
		</cache-id>
Remarque : L'utilisation d'agencements avec limitation de temps définis pour la page d'accueil (TopCategoriesDisplay.jsp) nécessite un paramètre de configuration supplémentaire pour permettre à PageDesignMetaDataGenerator de définir le délai d'attente d'entrée du cache.
Dans le fichier de configuration SEOURLPatterns.xml, ajoutez le paramètre pageId aux entrées appropriées :
<seourl:seoUrlPatternDef name="HomePageURLWithLang">
  <seourl:seoUrlPattern viewName="TopCategoriesDisplay">/LanguageToken/StoreToken:CatalogToken</seourl:seoUrlPattern>  
  <seourl:urlToParamMapping>
    <seourl:mapping name="langId" value="?LanguageToken?"/>
    <seourl:mapping name="storeId" value="?StoreToken?"/>
    <seourl:mapping name="catalogId" value="?CatalogToken?"/>
    <seourl:mapping name="pageName" value="HomePage"/>
    <seourl:mapping name="pageGroup" value="Content"/>
    <seourl:mapping name="pageId" value="pageId"/>
  </seourl:urlToParamMapping>
...
<seourl:seoUrlPatternDef name="HomePageURLWithLang">
  <seourl:seoUrlPattern viewName="TopCategoriesDisplay">/LanguageToken/StoreToken:CatalogToken</seourl:seoUrlPattern>  
  <seourl:urlToParamMapping>
    <seourl:mapping name="langId" value="?LanguageToken?"/>
    <seourl:mapping name="storeId" value="?StoreToken?"/>
    <seourl:mapping name="catalogId" value="?CatalogToken?"/>
    <seourl:mapping name="pageName" value="HomePage"/>
    <seourl:mapping name="pageGroup" value="Content"/>
    <seourl:mapping name="pageId" value="pageId"/>
  </seourl:urlToParamMapping>
...

pageId est la valeur d'ID de page pour la page d'accueil.

L'ID de page de la page d'accueil peut être trouvé en exécutant l'instruction SQL suivante pour votre magasin :
SELECT PLPAGE_ID, STOREENT_ID FROM PLPAGE 
WHERE ADMINNAME = 'HomePage' AND STOREENT_ID IN 
(SELECT RELATEDSTORE_ID FROM STOREREL WHERE STORE_ID = store_Id AND STRELTYP_ID = -11)