Mise en cache des données de service dans une application composite
Vous pouvez activer la mise en cache des données au niveau des services qui sont utilisés pour récupérer des données dans une application composite. La mise en cache permet de réduire le nombre de requêtes réseau vers le serveur, ce qui améliore les performances et l'expérience utilisateur. Par exemple, la mise en cache d'un service qui prend plusieurs secondes à se charger peut réduire la disponibilité du réseau, notamment s'il est exécuté fréquemment et que les données renvoyées ne changent pas souvent. Lorsque la mise en cache est activée et que la propriété CacheDuration est définie, le résultat du service est stocké temporairement par le navigateur jusqu'à ce que le cache expire après la durée spécifiée. Vous pouvez également lier un événement au paramètre de service InvalidateCache afin d'effacer manuellement les données mises en cache pour un service. Vous disposez ainsi d'un contrôle programmatique sur le cycle de vie du cache. Par exemple, si un utilisateur met à jour des données à un endroit spécifique d'une application composite, vous pouvez déclencher InvalidateCache pour forcer l'appel suivant afin de récupérer les données actualisées.
Prenons l'exemple d'une application composite qui utilise un service pour afficher des données météorologiques en temps réel. Vous pouvez activer la mise en cache en sélectionnant CacheReturnedData dans le panneau Propriétés des données. Définissez CacheDuration sur 60000 millisecondes (1 minute) et choisissez Nom d'application composite comme CacheStrategy pour partager le cache entre les instances d'application composite. Si les utilisateurs rechargent l'application composite dans la minute qui suit, ThingWorx leur propose le résultat mis en cache. Une fois la durée expirée, il appelle à nouveau le service. Si l'application composite accepte des paramètres d'entrée, tels qu'une ville sélectionnée, vous pouvez configurer CacheKeyParameters pour que les données soient mises en cache séparément pour chaque entrée. Si l'application composite met en cache trop de combinaisons ou utilise trop de mémoire.
Bonnes pratiques en matière de mise en cache des données d'application composite
• Utilisez la mise en cache de manière sélective et activez-la uniquement pour les services qui renvoient des données statiques ou à évolution lente.
• Définissez des durées de mise en cache raisonnables. Evitez les longues durées de mise en cache, sauf si les mises à jour de données sont peu fréquentes.
• Evitez de mettre en cache des jeux de données volumineux. Au lieu de cela, paginez les résultats ou limitez les données au strict nécessaire.
• Tester vos stratégies de mise en cache. Utilisez l'outil de débogage de la mise en cache pendant le développement pour valider le comportement de mise en cache.
Activation de la mise en cache de services dans une application composite
Pour activer la mise en cache d'un service dans une application composite, procédez comme suit :
1. Dans Mashup Builder, ouvrez le panneau Données, puis sélectionnez le service de données que vous souhaitez mettre en cache pour afficher ses propriétés de données.
2. Dans le panneau Propriétés des données, sous Recherche avancée, cochez la case en regard de la propriété CacheReturnedData.
3. Spécifiez le temps de conservation du résultat (en millisecondes) à l'aide de la propriété CacheDuration.
4. Si vous le souhaitez, spécifiez la stratégie de stockage en cache à l'aide de la propriété CacheStrategy.
5. Pour mettre en cache les résultats des entrées de paramètres spécifiques, sélectionnez le paramètre dans la liste déroulante des valeurs CacheKeyParameters.
6. Cliquez sur Enregistrer, puis sur Afficher l'application composite.
Au moment de l'exécution, lorsque le service est exécuté pour la première fois, ses données sont mises en cache. Toutes les données renvoyées selon les paramètres d'entrée sélectionnés pour le service à l'aide de la propriété CacheKeyParameters sont mises en cache. Lorsque le service est à nouveau exécuté, les données sont récupérées à partir du cache stocké jusqu'à la durée d'expiration définie dans CacheDuration.
Choix d'une stratégie de mise en cache
Vous pouvez utiliser la propriété CacheStrategy pour stocker les données mises en cache de l'une des deux manières suivantes :
• Instance d'application composite : le cache généré est basée sur un identificateur unique pour l'instance actuelle de l'application composite. Cette stratégie vous permet de vous assurer que chaque instance d'une application composite dispose d'un cache distinct, ce qui est utile lorsque chaque instance de l'application composite affiche des données différentes même lorsque l'entité et le service sont identiques.
• Nom d'application composite : le cache généré est basée sur les noms de l'application composite, de l'entité et du service. Utilisez cette stratégie lorsque les mêmes données doivent être affichées sur plusieurs instances d'une application composite, par exemple dans un widget Collection ou lorsqu'une application composite est intégrée à d'autres applications composites. Cette stratégie est moins spécifique que la mise en cache d'instance, et le cache est partagé entre toutes les instances d'une même application composite.
Propriétés de mise en cache de service
Le tableau suivant répertorie les propriétés de mise en cache disponibles pour les services dans le panneau Propriétés des données.
|
Propriété
|
Description
|
Type de base
|
Valeur par défaut
|
Liaison possible ?
|
|
CacheReturnedData
|
Activez cette option pour mettre en cache les données renvoyées par le serveur.
|
BOOLEAN
|
Faux
|
Non
|
|
CacheDuration
|
Définit la durée de vie des données mises en cache en millisecondes. Lorsque des données sont mises en cache, les nouvelles données sont récupérées du serveur uniquement une fois la durée expirée.
|
INTEGER
|
|
Oui
|
|
CacheStrategy
|
Contrôle le mode de stockage du cache. Vous pouvez choisir de stocker les résultats mis en cache en fonction de l'Instance d'application composite ou du Nom d'application composite.
|
STRING
|
Instance d'application composite
|
Non
|
|
CacheKeyParameters
|
Ouvre une liste déroulante qui vous permet de sélectionner les paramètres d'entrée à utiliser pour générer la clé de cache. Lorsqu'un paramètre d'entrée de service est sélectionné, les résultats du service correspondant à cette entrée sont mis en cache.
|
STRING
|
|
Non
|
|
MaxResultSets
|
Contrôle le nombre maximal de résultats à stocker pour le service de données. Un nouveau résultat est mis en cache lorsque les paramètres d'entrée sont mis à jour. Le résultat le plus ancien est supprimé lorsque le nombre maximal est atteint.
|
INTEGER
|
10
|
Oui
|
|
InvalidateCache
|
Efface le résultat mis en cache pour un service. Disponible uniquement lorsque la mise en cache est activée. Vous pouvez déclencher ce service pour actualiser les données mises en cache lorsqu'un changement de serveur se produit ou pour forcer manuellement la récupération de nouvelles données.
|
|
Le service InvalidateCache n'est disponible que lorsque CacheReturnedData est activé.
|
|
Service
|
|
Oui
|
Validation et dépannage des performances de la mise en cache
Si la mise en cache améliore les performances réseau, le stockage d'une trop grande quantité de données en mémoire peut réduire la réactivité de l'application composite et entraîner des problèmes de performances. Pour atténuer ces problèmes, ThingWorx limite automatiquement la quantité de mémoire pouvant être utilisée pour la mise en cache. Si une application dépasse la taille maximale du cache, le système purge automatiquement les anciennes entrées du cache, en commençant par la plus ancienne, jusqu'à ce que l'espace disponible soit suffisant pour stocker le nouveau jeu de résultats. Vous pouvez utiliser l'outil de débogage à l'exécution pour surveiller et gérer les données mises en cache utilisées par les applications composites. Pour ouvrir l'outil de débogage à l'exécution, cliquez sur le bouton Afficher/masquer les informations de débogage dans la barre d'outils de l'application composite si elle est visible ou appuyez sur CTRL+ALT+MAJ+F9 pour afficher la barre d'outils d'exécution.
|
|
ThingWorx supprime automatiquement les éléments mis en cache lorsqu'un service atteint son nombre maximal de résultats stockables ou lorsque la taille totale du cache dépasse la limite. Si le cache dépasse la limite de taille totale, ThingWorx supprime les entrées en cache les plus anciennes jusqu'à créer suffisamment d'espace pour stocker le nouveau jeu de résultats. Ces limites permettent de garantir des performances optimales et d'éviter une utilisation excessive de la mémoire dans le navigateur.
|
La capture d'écran suivante illustre le débogueur à l'exécution. Dans la partie supérieure de l'onglet Cache Data, une synthèse vous indique le nombre total d'éléments mis en cache, la taille totale approximative du cache et la taille de cache maximale autorisée. Cette synthèse vous aide à évaluer rapidement si la mise en cache est susceptible d'affecter les performances.
Le débogueur affiche les informations suivantes pour chaque service mis en cache :
• Nom d'application composite : application composite qui a appelé le service.
• Nom du service : service spécifique qui a mis les données en cache.
• ID de cache : identificateur interne utilisé pour regrouper et identifier les résultats mis en cache.
• Les entrées de résultat mises en cache. Chaque élément affiche ce qui suit :
◦ Stratégie de mise en cache de l'élément mis en cache.
◦ Taille du résultat mis en cache.
◦ Heure du dernier accès.
◦ Paramètres d'entrée utilisés dans l'appel de service et leur valeur.
◦ Un bouton de suppression pour supprimer manuellement l'entrée de cache.
Lorsque des éléments mis en cache sont supprimés manuellement ou automatiquement, la synthèse est mise à jour. Vous pouvez également développer et réduire chaque section. Dans cet exemple, le premier service, getCategories, est mis en cache pour le nom d'application composite. D'autres services, tels que serviceDefsMock, sont mis en cache pour le fichier Mashup Instance. Les paramètres d'entrée mis en cache et leur valeur pour ce service sont également répertoriés.