Almacenamiento en memoria caché para servicios REST
Los servicios REST utilizan almacenamiento en memoria caché del lado del servidor y del lado del cliente. El almacenamiento en memoria caché del lado del servidor se logra utilizando dynacache y el almacenamiento en memoria caché del lado del cliente se logra utilizando directivas de memoria caché en la cabecera de respuesta.
Infraestructura de memoria caché REST
![Flujo de interacciones de infraestructura de memoria caché REST](../images/locale/wvrestcacheframework.gif)
Donde:
RESTCacheFilter
analiza el URI de solicitud, lo señala y lo añade al atributo. También obtiene los demás atributos, comopreviewToken
, de la cabecera HTTP.La señal de vía de acceso se obtiene del URL y se establece en el atributo con el filtro de memoria caché del servlet.
- El
cache-id
en el archivo cachespec.xml define la regla para almacenar en memoria caché la solicitud REST. La entrada de memoria caché de un recurso específico se genera concache-id
. - El
dependency-id in
en cachespec.xml especifica los identificadores de memoria caché adicionales y los asocia a tipos dedependency-id
existentes. - Si es necesario convertir
identifier-id
,RESTMetaDataGenerator
generadependency-id
con un ID. - Si
cache-id
existe en la instancia DynaCache, devuelve la entrada de memoria caché directamente desde la memoria caché. Sicache-id
no existe en la instancia DynaCache, llama al servlet de programa de fondo para que cree la entrada de memoria caché y devuelve los datos al solicitante.
- Defina el
dependency-id
para el identificador, por ejemploCategoryDisplay:storeId:categoryIdentifier
, y busque eldependency-id
relacionado existente, por ejemploCategoryDisplay:storeId:categoryIdentifier
. Esto garantiza que la función de invalidación actual pueda invalidar la entrada de memoria caché. - En
RESTMetaDataGenerator
, obtiene eldependency-id
relacionado con la entrada caché actual cuando se recibe la solicitud. - En
RESTMetaDataGenerator
, envía la consulta al sistema de fondo para obtener el ID del elemento con el identificador como un parámetro de consulta, tales comostoreId
ycategoryIdentifier
. Para mejorar el rendimiento de consultas, puede utilizar la memoria caché de datos local para almacenar en la memoria caché la consulta. - En
RESTMetaDataGenerator
, establezca el ID como eldependency-id
, por ejemploCategoryDisplay:storeId:categoryId
.
dependency-id
en RESTMetaDataGenerator
:
Enumeration dataIds = fragmentInfo.getDataIds();
while(dataIds.hasMoreElements()){
String dataId = (String)dataIds.nextElement();
String covertedDataId = convertDataId(dataId, req);
if(covertedDataId!=null){
fragmentInfo.addDataId(covertedDataId);
}
}
No se da soporte a la generación de dependencias en el servidor de búsqueda de HCL Commerce porque no hay ningún metagenerador predeterminado para correlacionar partNumber y categoryIdentifier con su correspondiente ID de producto o ID de categoría.
La clase com.ibm.commerce.rest.caching.RESTKeyListMetaDataGenerator puede dividirse en varios ID de consultas de solicitud REST en varios ID de dependencia para cada ID individual. Esta clase puede utilizarse en tanto en el servidor de HCL Commerce y como en el servidor de búsqueda de HCL Commerce.
Almacenamiento en memoria caché del lado del servidor
- Transaction server API REST
- WCDE_installdir\components\foundation\samples\dynacache\REST
com.ibm.commerce.rest.caching.RESTCacheFilter
extrae los parámetros de la vía de acceso y lo establece como atributos de solicitud. A continuación, los atributos de solicitud se utilizan para crear cache-id. Posteriormente, las reglas de cache-id se aplican para determinar cuál de los URL siguientes pueden almacenarse en memoria caché:- /wcs/resources/store/storeID/categoryview/@top
- /wcs/resources/store/storeID/categoryview/categoryIdentifier
- /wcs/resources/store/storeID/categoryview/byId/categoryId
- /wcs/resources/store/storeID/categoryview/byIds
- /wcs/resources/store/storeID/categoryview/byParentCategory/parentCategoryId
- /wcs/resources/store/storeID/productview/partnumber
- /wcs/resources/store/storeID/productview/byId/productId
- /wcs/resources/store/storeID/productview/byCategory/categoryId
- /wcs/resources/store/storeID/productview/bySearchTerm/searchTerm
- /wcs/resources/store/storeID/espot/espotIdentifier
- /wcs/resources/store/storeID/espot/espotIdentifier/category/categoryID
- /wcs/resources/store/storeID/espot/espotIdentifier/product/productID
![HCL Commerce Version 9.1.12.0 or later](../../base/images/91120plus.png)
- La API de REST de búsqueda de Solr
-
El contenedor del servidor Solr incluye un archivo cachespec.xml de ejemplo que contiene configuraciones de REST de almacenamiento en la memoria caché. El contenedor del servidor Solr incluye el archivo cachespec.xml.sample de ejemplo en la ubicación siguiente:
/profile/apps/search-ear.ear/search-rest.war/WEB-INF/cachespec.xml.rest.sample
.Implemente el almacenamiento ampliado en la memoria caché fusionando las reglas de almacenamiento en la memoria caché en el search-rest.war/WEB-INF/cachespec.xml.rest.sample, en la ubicación /profile/apps/search-ear.ear/search-rest.war/WEB-INF/cachespec.xml.
com.ibm.commerce.rest.caching.RESTCacheFilter
extrae los parámetros de la vía de acceso y los establece como atributos de solicitud. A continuación, los atributos de solicitud se utilizan para crear cache-id. Posteriormente, las reglas de cache-id se aplican para determinar cuál de los URL siguientes pueden almacenarse en memoria caché:- /search/resources/store/{storeId}/categoryview/@top
- /search/resources/store/{storeId}/categoryview/{categoryIdentifier}
- /search/resources/store/{storeId}/categoryview/byId/{uniqueID}
- /search/resources/store/{storeId}/categoryview/byIds?id={uniqueID1}&id={uniqueID2}
- /search/resources/store/{storeId}/categoryview/byParentCategory/{category_unique_id}
- /search/resources/store/{storeId}/productview/{partnumber}
- /search/resources/store/{storeId}/productview/byPartNumbers?partNumber={partnumber1}&partNumber={partnumber2}
- /search/resources/store/{storeId}/productview/byId/{uniqueID}
- /search/resources/store/{storeId}/productview/byIds?id={uniqueID1}&id={uniqueID2}
- /search/resources/store/{storeId}/productview/byCategory/{category_unique_id
- /search/resources/store/{storeId}/productview/bySearchTerm/{searchTerm}?pageNumber={pageNumber}&pageSize={pageSize}
- /search/resources/store/{storeId}/productview/bySearchTerm/{searchTerm}?metaData={metaDataValue}
- /search/resources/store/{storeId}/sitecontent/webContentsBySearchTerm/{searchTerm}
- /search/resources/store/{storeId}/sitecontent/suggestions
Atributo de solicitud | Parámetro de vía de acceso en URL REST |
---|---|
storeId | storeID |
catalogId | catalogID |
productId | El ID de producto de partnumber, productID y uniqueID del URL de producto |
categoryId | El ID de categoría del groupID, categoryID, category_unique_ID y uniqueID del URL de categoría |
espotId | espotIdentifier |
searchTerm | searchTerm |
acción | Valores aceptados:
|
urlType | Valores aceptados:
Nota: El atributo de solicitud urlType no se utiliza. |
El almacenamiento en memoria caché de lado del servidor para los servicios REST que proporciona HCL Commerce Server que utiliza la memoria caché de servlet y archivos JSP no puede utilizarse debido a un vínculo local en la aplicación web de tienda. Sin embargo, las aplicaciones externas fuera del EAR de HCL Commerce pueden utilizar el almacenamiento en memoria caché de lado del servidor que proporciona HCL Commerce Server. En cambio, los servicios REST proporcionados por el servidor de búsqueda pueden almacenarse en memoria caché utilizando el almacenamiento en memoria caché de lado del servidor porque se despliegan fuera de HCL Commerce Server. Para obtener más información, consulte Archivos JSP de escaparate que utilizan el almacenamiento en memoria caché del lado de cliente.
Almacenamiento en memoria caché del lado del cliente
- Caduca
- Cache-Control
<cache>
<!-- resource name="example" expiresAfter="60 (mins)" isPrivate="true|false"-->
<resource name="categoryview" expiresAfter="60" isPrivate="false"/>
<resource name="productview" expiresAfter="60" isPrivate="false"/>
<resource name="espot" expiresAfter="60" isPrivate="false"/>
</cache>
Se pueden realizar operaciones de sobreescritura o adición a las directivas de almacenamiento en memoria caché de los recursos REST. Para sobrescribir la hora de caducidad o habilitar el almacenamiento en memoria caché del cliente para más recursos REST, cree o modifique un archivo WEB-INF/config/com.ibm.commerce.rest-ext/wc-rest-clientCaching.xml personalizado.
Archivos JSP de escaparate que utilizan el almacenamiento en memoria caché del lado de cliente
Los archivos JSP de escaparate pueden utilizar el almacenamiento en memoria caché del lado de cliente cuando se llama a los servicios REST utilizando la biblioteca de etiquetas de <wcf:rest>
.
- El almacenamiento en memoria caché del lado del cliente está habilitado para el servicio REST. Para configurar el almacenamiento en memoria caché del lado del cliente, consulte la sección anterior.
- Se debe especificar el atributo
cached="true"
. Por ejemplo:<wcf:rest var="sdb" url="store/{storeId}/databean" cached="true"> <wcf:var name="storeId" value="${storeId}" encode="true"/> <wcf:param name="profileName" value="IBM_Store_Details" encode="true"/> <wcf:param name="langId" value="${langId}" encode="true"/> <wcf:param name="jspStoreDir" value="${jspStoreDir}" encode="true" /> </wcf:rest>
<wcf:rest>
para iniciar los servicios REST deben marcar el consume-subfragments
de su entrada de memoria caché en true en el archivo cachespec.xml de la tienda. Si no es así, los archivos JSP o fragmentos de archivos JSP almacenados en memoria caché pueden iniciar los servicios REST de forma incorrecta y provocar errores de tiempo de ejecución.![HCL Commerce Version 9.1.12.0 or later](../../base/images/91120plus.png)
Búsqueda de Solr: configuraciones de almacenamiento ampliadas en la memoria caché
- Almacenamiento en REST en Solr
- El contenedor de Transaction server incluye un archivo de ejemplo cachespec.xml que contiene configuraciones de almacenamiento en la memoria caché de REST para la tienda Emerald (B2C). Implemente el almacenamiento en la memoria caché ampliada fusionando las reglas de almacenamiento en la memoria caché de /profile/apps/search-ear.ear/search-rest.war/WEB-INF/cachespec.xml.rest.sample en , en la ubicación /profile/apps/search-ear.ear/search-rest.war/WEB-INF/cachespec.xml.