Premiers pas avec le Cache de la plate-forme
Objectifs de formation
Une fois cette unité terminée, vous pourrez :
- Présenter le cache de la plate-forme et sa fonction.
- Répertorier les deux types de cache de la plate-forme et donner des exemples de chaque type.
- Décrire les partitions et comment les utiliser.
Qu'est-ce qu'un cache ?
Un cache est un emplacement de stockage temporaire. En termes informatiques, un cache est un emplacement qui contient provisoirement les données fréquemment accédées dans une base de données. Prenons une analogie : un écureuil recherche des noisettes et des glands pour le dîner. Il est 17 heures, il est affamé. Va-t-il consommer les noisettes et les glands qu'il porte dans ces bajoues (cache) ou bien retourner en forêt pour explorer d'autres arbres (base de données) ? S'il accède au cache alimentaire temporaire dans ses bajoues, son dîner est à portée de dents et il peut reprendre des forces sans attendre ! Il atteint son objectif plus efficacement. Un cache de données offre des avantages similaires, mais pour les êtres humains, les écureuils ne semblent pas intéressés.
Qu'est-ce que le Cache de la plate-forme ?
Le Cache de la plate-forme est une couche mémoire qui stocke une session Salesforce et les données d'une organisation pour pouvoir y accéder ultérieurement. Lorsque vous utilisez le Cache de la plate-forme, vos applications sont exécutées plus rapidement, car elles stockent en mémoire des données réutilisables. Les applications peuvent accéder rapidement à ces données, sans calculs dupliqués ni requêtes à la base de données à chaque transaction. Pour résumer, le cache de la plate-forme est comparable à la mémoire vive de votre application cloud.
Avec le Cache de la plate-forme, vous pouvez également allouer un espace de cache à certaines applications ou opérations afin qu'elles n'utilisent pas les capacités d'autres processus. Pour distribuer l'espace, vous utilisez des partitions. Nous aborderons les partitions plus loin.
Avant d'aller plus loin
Interrompons-nous un moment pour vous permettre de demander une évaluation du Cache de la plate-forme. Par défaut, votre organisation Developer offre 0 Mo de capacité cache. Vous pouvez demander un cache d'évaluation de 10 Mo.
Pour demander une évaluation, accédez à Configuration dans votre organisation Developer. Dans la zone Quick Find (Recherche rapide), saisissez cache, puis cliquez sur Platform Cache (Cache de la plate-forme). Cliquez sur Request Trial Capacity (Demander une capacité d'évaluation) et attendez l'e-mail confirmant l'activation de votre évaluation Cache de la plate-forme. Salesforce approuve immédiatement les demandes d'évaluation, cependant la réception de l'e-mail de confirmation peut prendre quelques minutes pour vous.
Si vous n'avez pas de cache d'évaluation, vous pouvez quand même effectuer des opérations cache pour apprendre comment l'utiliser. Cependant, le stockage cache est contourné et les valeurs récupérées sont nulles (échec d'accès au cache).
Bien, vous avez demandé un Cache de la plate-forme d'évaluation. Explorons maintenant les autres concepts.
Comment puis-je utiliser le Cache de la plate-forme ?
Vous pouvez utiliser le Cache de la plate-forme dans votre code presque partout où vous accédez à répétition aux mêmes données. L'utilisation de données mises en cache améliore les performances de votre application et est plus rapide que l'exécution de requêtes SOQL récurrentes, des appels d'API multiples ou des calculs informatiques complexes.
Les données les plus intéressantes à mettre en cache sont les suivantes :
- Données réutilisées pendant une session ou entre l'ensemble des utilisateurs et des requêtes
- Données statiques (ou qui évoluent lentement)
- Données dont le calcul ou la récupération est coûteux
Stockage des données qui changent rarement
Utilisez le cache pour stocker des données statiques ou qui changent peu. Ces données sont initialement récupérées en utilisant des appels d'API à partir d'un tiers ou localement à l'aide de requêtes SOQL. Si les données changent, mettez-les en cache si la précision des valeurs n'est pas un élément essentiel.
Exemples de données statiques :
- Horaires de transport en commun
- Planning de société de transport par autocar
- En-têtes d'onglet que tous les utilisateurs peuvent afficher
- Barre de navigation statique affichée dans chaque page de votre application
- Panier d'achat d'un utilisateur que vous souhaitez enregistrer durant la durée d'une session
- Clichés instantanés quotidiens de taux de change (les taux fluctuent pendant la journée)
Stockage des données obtenues à l'aide de calculs complexes
Les valeurs résultant de calculs complexes ou de longues requêtes sont de bons candidats pour un stockage en cache. Exemples de ces données :
- Ventes totales de la semaine dernière
- Nombre total d'heures de volontariat effectuées par l'ensemble des employés de la société
- Classement par ventes
Pour déterminer où utiliser le Cache de la plate-forme, inspectez votre code. Par exemple, les données des applications sont-elles actuellement stockées en surchargeant un état d'affichage Visualforce ? Ces valeurs stockées sont toutes candidates pour le Cache de la plate-forme.
Les données ne sont pas toutes de bonnes candidates pour le Cache de la plate-forme. Par exemple, les données en temps réel qui changent fréquemment, telles que les cours de bourse, ne sont pas de bonnes candidates pour la mise en cache. Prenez connaissance et tenez compte des limitations du Cache de la plate-forme. Par exemple, si vos données sont accédées par un code Apex asynchrone, elles ne peuvent pas être stockées dans un cache basé sur la session de l'utilisateur.
Allocations de cache par édition
Le Cache de la plate-forme est disponible pour les clients d'organisations Enterprise Edition et supérieures. Les éditions ci-dessous offrent un espace de cache par défaut. Cependant, l'augmentation de d'espace de mémoire cache entraîne souvent une amélioration des performances.
- Enterprise Edition (10 Mo par défaut)
- Unlimited Edition (30 Mo par défaut)
- Performance Edition (30 Mo par défaut)
Expérimentation avec un cache d'évaluation
Vous pouvez acheter un cache supplémentaire pour votre organisation. Pour déterminer la quantité d'espace de cache utile à vos applications, demandez un cache d'évaluation et essayez-le. Demandez également un cache d'évaluation pour Professional Edition avant d'acheter un espace de cache. Utilisez un cache d'évaluation dans votre organisation Developer Edition pour développer et tester vos applications avec le Cache de la plate-forme. Une fois votre demande approuvée, vous recevez 30 Mo d'espace cache d'évaluation (10 Mo pour Developer Edition). Pour obtenir un espace de cache d'évaluation supplémentaire, contactez Salesforce.
Quels sont les différents types de Cache de la plate-forme ?
Il existe deux types de Cache de la plate-forme : le cache de l'organisation et le cache de la session.
Cache de l'organisation
Le cache de l'organisation stocke les données de l'ensemble de l'organisation que tous les utilisateurs de l'organisation peuvent utiliser. Il est accessible dans l'ensemble des sessions, par les requêtes ainsi que les utilisateurs et les profils de l'organisation.
Par exemple, les données météo peuvent être mises en cache et affichées en fonction de la localisation des contacts. Les clichés instantanés quotidiens des taux de change peuvent être mis en cache afin d'être utilisés dans une application.
Cache de la session
Le cache de la session stocke les données d'un utilisateur individuel. Il est lié à la session de l'utilisateur. La durée maximale d'une session est de huit heures.
Par exemple, supposons que votre application calcule la distance entre l'emplacement d'un commercial et tous les clients qu'il souhaite visiter le jour même. L'emplacement et les distances calculées sont stockés dans le cache de la session. Ainsi, si le commercial souhaite consulter ces informations, il n'est pas nécessaire de recalculer les distances. Autre exemple, une application peut autoriser les utilisateurs à personnaliser l'ordre des onglets de navigation et réutiliser cet ordre lorsque les utilisateurs visitent d'autres pages de l'application.
Quels gains de performance le cache offre-t-il ?
Vous vous demandez probablement quels sont les gains de performance lors de l'utilisation du Cache de la plate-forme. La récupération de données à partir du cache est beaucoup plus rapide qu'avec un appel d'API. Une comparaison du temps de récupération entre le SOQL et le cache montre également que le cache est également beaucoup plus rapide que les requêtes SOQL.
Le tableau ci-dessous présente les temps de récupération de données en millisecondes via un appel d'API et à partir du cache. Vous pouvez aisément noter les gains de performance considérables qu'offre l'analyse locale des données via le cache, notamment en récupérant des données dans de multiples transactions. Avec l'exemple utilisé pour le graphique, le cache est 100 fois plus rapide que les appels d'API. Dans ce graphique, les temps de récupération du cache sont de quelques millisecondes, mais ils sont indiqués sur la ligne 0 en raison de l'échelle utilisée pour la valeur de temps. Notez que ce graphique est un test exemple et que les valeurs réelles peuvent être différentes pour d'autres applications.
L'exécution d'appels d'API à des services externes est plus lente (1) que la récupération de données à partir du cache (2).
Ce graphique compare les temps de récupération entre le SOQL et le cache de la session et de l'organisation. Comme vous pouvez le constater, le SOQL est plus lent que le cache. Dans cet exemple, le cache est au moins deux fois plus rapide que le SOQL lors de la récupération de données dans une seule transaction. Avec des récupérations dans plusieurs transactions, la différence augmente en conséquence (notez que ce graphique est un exemple et que les valeurs réelles peuvent différer pour d'autres applications).
La récupération de données à l'aide de requêtes SOQL (1) et plus lente qu'avec le cache de la session et de l'organisation (2).
Que sont les partitions de cache ?
Nous avons indiqué plus haut que le Cache de la plate-forme permettait d'allouer de l'espace à l'aide de partitions. Intéressons-nous maintenant aux partitions. Les partitions permettent d'allouer de l'espace de cache afin d'équilibrer l'utilisation et les performances entre les applications. La mise en cache de données sur des partitions dédiées permet d'éviter le remplacement de l'espace de cache par d'autres applications ou des données moins importantes.
Avant d'utiliser l'espace de cache de votre organisation, vous devez créer des partitions afin de définir la capacité dont vous avez besoin pour vos applications. La capacité de chaque partition est répartie entre le cache de l'organisation et le cache de la session. Les allocations de cache de session et d'organisation peuvent être égales à zéro, 5 Mo ou plus, et doivent correspondre à des nombres entiers. La taille minimale d'une partition, y compris les allocations de cache d'organisation et de session, est de 5 Mo. Par exemple, l'espace de cache total de votre organisation est de 10 Mo et vous créez une partition de 5 Mo, avec 5 Mo alloués au cache de la session et 0 Mo au cache de l'organisation. Alternativement, vous créez une partition de 10 Mo, avec 5 Mo alloués au cache de l'organisation et 5 Mo alloués au cache de la session. La somme de toutes les partitions, y compris la partition par défaut, est égale à l'allocation totale du Cache de la plate-forme.
L'image ci-dessous montre des graphiques de capacité en cache et d'allocation de partition. Dans cet exemple, nous n'avons pas encore utilisé le cache, comme l'indique l'utilisation du cache de 0 % (1), et deux partitions ont été créées avec des allocations égales (2).
Partition par défaut
Vous pouvez définir n'importe quelle partition par défaut, mais une seule partition par défaut est possible. La partition par défaut permet d'utiliser une syntaxe abrégée pour exécuter des opérations de mise en cache dans cette partition. Cela signifie que lors de l'ajout d'une paire clé-valeur, il n'est pas nécessaire de qualifier un nom de clé complet comprenant l'espace de noms et le nom de la partition. Par exemple, au lieu de l’appeler Cache.Org.put(’namespace.partition.key’, 0);, vous pouvez utiliser seulement Cache.Org.put(’key’, 0);
Dans la prochaine unité, nous allons créer une partition dans la Configuration pour commencer à utiliser le Cache de la plate-forme !
Ressources
Ressources disponibles dans le guide du développeur Apex :
Ressources disponibles dans l’aide Salesforce :