Mashup Builder > Servicios de datos y enlaces > Ejecución de servicios de datos en un mashup > Almacenamiento en caché de los datos del servicio en un mashup
Almacenamiento en caché de los datos del servicio en un mashup
Se pueden activar los datos de almacenamiento en caché para los servicios que se utilizan para recuperar datos en un mashup. El almacenamiento en caché ayuda a reducir el número de solicitudes de red al servidor, lo que mejora el rendimiento y la experiencia del usuario. Por ejemplo, el almacenamiento en caché de un servicio que tarda varios segundos en cargarse puede reducir la red, especialmente si el servicio se ejecuta con frecuencia y los datos devueltos no cambian con frecuencia. Cuando el almacenamiento en caché está activado y se define la propiedad CacheDuration, el explorador almacena temporalmente el resultado del servicio hasta que la caché caduque después de la duración especificada. También se puede enlazar un evento al parámetro de servicio InvalidateCache para despejar manualmente los datos almacenados en caché de un servicio. De este modo, se proporciona control mediante programación sobre el ciclo de vida de la caché. Por ejemplo, si un usuario actualiza datos en un lugar específico de un mashup, se puede activar InvalidateCache para forzar la siguiente llamada para extraer datos nuevos.
Por ejemplo, considere un mashup en el que se utiliza un servicio para mostrar datos meteorológicos en tiempo real. Para activar el almacenamiento en caché, selecciona CacheReturnedData en el panel Propiedades de datos. CacheDuration se define en 60000 milisegundos (1 minuto) y se elige Nombre del mashup como CacheStrategy para compartir la caché entre las instancias de mashup. Si los usuarios vuelven a cargar el mashup en un minuto, ThingWorx proporciona el resultado almacenado en caché. Una vez que venza la duración, vuelve a llamar al servicio. Si en el mashup se aceptan parámetros de entrada, como una ciudad seleccionada, se puede configurar CacheKeyParameters para almacenar en caché los datos por separado para cada entrada. Si en el mashup se almacenan en caché demasiadas combinaciones o se utiliza demasiada memoria.
Prácticas recomendadas para almacenar en caché datos de mashup
Utilice el almacenamiento en caché de forma selectiva y actívelo solo para los servicios que devuelven datos estáticos o de cambio lento.
Defina duraciones razonables de caché. Evite tiempos de caché largos, a menos que las actualizaciones de datos sean poco frecuentes.
Evite almacenar en caché grandes conjuntos de datos. En su lugar, pagine los resultados o limite los datos solo a lo que se requiera.
Pruebe distintas estrategias de caché. Utilice la herramienta de depuración de almacenamiento en caché durante el desarrollo para validar el comportamiento del almacenamiento en caché.
Activación del almacenamiento en caché de servicios en un mashup
Para activar el almacenamiento en caché de un servicio en un mashup, siga estos pasos:
1. En Mashup Builder, abra el panel Datos y, a continuación, seleccione el servicio de datos que desea almacenar en caché para ver sus propiedades de datos.
2. En el panel Propiedades de datos, en Avanzado, seleccione la casilla situada junto a la propiedad CacheReturnedData.
3. Especifique el número de milisegundos que se conservará el resultado almacenado mediante la propiedad CacheDuration.
4. Opcionalmente, especifique la estrategia de almacenamiento en caché con la propiedad CacheStrategy.
5. Para almacenar en caché los resultados de entradas de parámetros específicas, seleccione el parámetro de la lista desplegable de los valores CacheKeyParameters.
6. Pulse en Guardar y, a continuación, en Ver mashup.
En tiempo de ejecución, los datos de servicio se almacenan en caché cuando el servicio se ejecuta por primera vez. Se almacenan en caché todos los datos devueltos en función de los parámetros de entrada seleccionados para el servicio mediante la propiedad CacheKeyParameters. Cuando se vuelve a ejecutar el servicio, los datos se recuperan de la caché almacenada hasta que caduca el tiempo definido en CacheDuration.
Elección de una estrategia de almacenamiento en caché
La propiedad CacheStrategy se puede utilizar para almacenar los datos almacenados en caché de una de dos maneras:
Instancia de mashup: se genera una caché basada en un identificador único de la instancia de mashup actual. Utilice esta estrategia para garantizar que cada instancia de un mashup tenga una caché independiente, que es útil cuando en cada instancia de mashup se muestran datos diferentes, incluso cuando la entidad y el servicio son iguales.
Nombre del mashup: se genera una caché basada en los nombres de mashup, entidad y servicio. Esta estrategia se utiliza cuando se espera que los mismos datos se muestren en múltiples instancias de un mashup, como en un widget de recopilación o cuando un mashup está integrado en otros mashups. Esta estrategia es menos específica que el almacenamiento en caché de instancias y la caché se comparte entre todas las instancias del mismo mashup.
Propiedades del almacenamiento en caché del servicio
En la siguiente tabla se enumeran las propiedades de almacenamiento en caché que están disponibles para los servicios en el panel Propiedades de datos.
Propiedad
Descripción
Tipo base
Valor por defecto
¿Es enlazable?
CacheReturnedData
Active esta opción para almacenar en caché los datos devueltos desde el servidor.
BOOLEAN
Falso
No
CacheDuration
Permite definir el tiempo de vida para los datos almacenados en caché en milisegundos. Cuando los datos se almacenan en la caché, los nuevos datos se recuperan del servidor solo después de que caduque la duración.
INTEGER
CacheStrategy
Permite controlar la manera en que se almacena la caché. Se puede elegir almacenar los resultados en caché en función de las opciones Instancia de mashup o Nombre del mashup.
STRING
Instancia de mashup
No
CacheKeyParameters
Permite abrir una lista desplegable en la que se pueden seleccionar los parámetros de entrada que se utilizarán para generar la clave de caché. Cuando se selecciona un parámetro de entrada de servicio, los resultados del servicio de esa entrada se almacenan en la caché.
STRING
No
MaxResultSets
Permite controlar el número máximo de resultados que se deben almacenar para el servicio de datos. Un nuevo resultado se almacena en caché cuando se actualizan los parámetros de entrada. El resultado más antiguo se borra cuando se alcanza el máximo.
INTEGER
10
InvalidateCache
Permite despejar el resultado almacenado en caché de un servicio. Solo está disponible cuando el almacenamiento en caché está activado. Este servicio se puede activar para renovar los datos almacenados en caché cuando se produce un cambio en el servidor o para forzar manualmente la recuperación de nuevos datos.
* 
El servicio InvalidateCache solo está disponible cuando CacheReturnedData está activado.
Servicio
Validación y resolución de problemas del rendimiento del almacenamiento en caché
Aunque el almacenamiento en caché mejora el rendimiento de la red, almacenar demasiados datos en la memoria puede reducir la capacidad de respuesta del mashup y provocar problemas de rendimiento. Para mitigar estos problemas, ThingWorx limita automáticamente la cantidad de memoria que se puede utilizar para el almacenamiento en caché. Si una aplicación supera el tamaño máximo de caché, el sistema depura automáticamente las entradas de caché más antiguas, empezando por la más antigua, hasta que haya suficiente espacio disponible para almacenar el nuevo conjunto de resultados. Se puede utilizar la herramienta de depuración en tiempo de ejecución para supervisar y gestionar los datos almacenados en caché que utilizan los mashups. Para abrir la herramienta de depuración en tiempo de ejecución, pulse en el botón Mostrar/Ocultar información de depuración de la barra de herramientas del mashup, si está visible, o pulse CTRL+ALT+MAYÚS+F9 para mostrar la barra de herramientas de tiempo de ejecución.
* 
ThingWorx quita automáticamente los elementos almacenados en caché cuando un servicio alcanza su número máximo de resultados almacenados o cuando el tamaño total de la caché supera el límite. Si la caché supera el límite de tamaño total, ThingWorx borra primero las entradas almacenadas en caché más antiguas hasta que se cree suficiente espacio para almacenar el nuevo conjunto de resultados. Estos límites ayudan a garantizar un rendimiento óptimo y a evitar el uso excesivo de memoria en el explorador.
En la siguiente imagen se muestra el depurador en tiempo de ejecución. En la parte superior de la ficha Cache Data, se puede ver un resumen en el que se muestran el número total de elementos almacenados en caché, un tamaño total aproximado de la caché y el tamaño máximo de caché permitido. Este resumen ayuda a evaluar rápidamente si el almacenamiento en caché puede afectar al rendimiento.
En el depurador se muestra la siguiente información para cada servicio almacenado en caché:
Nombre del mashup: mashup que ha llamado al servicio.
Nombre del servicio: servicio específico que ha almacenado los datos en caché.
ID de caché: identificador interno que se utiliza para agrupar e identificar los resultados almacenados en caché.
Las entradas de resultados almacenadas en caché. Cada elemento muestra lo siguiente:
La estrategia de almacenamiento en caché del elemento almacenado en caché.
El tamaño del resultado almacenado en caché.
La última hora de acceso.
Los parámetros de entrada que se utilizan en la llamada de servicio y su valor.
Un botón Borrar para quitar manualmente la entrada de la caché.
Cuando los elementos almacenados en caché se borran manual o automáticamente, el resumen se actualiza. También se puede expandir y contraer cada sección. En este ejemplo, el primer servicio, getCategories se almacena en caché para el nombre del mashup. Otros servicios, como serviceDefsMock, se almacenan en caché para el elemento Mashup Instance. También se enumeran los parámetros de entrada almacenados en caché y sus valores para este servicio.
¿Fue esto útil?