Antimodèle : stocker les données supérieures à 256 ko dans le cache
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Vous consultez la documentation d'Apigee et d'Apigee hybrid. Consultez la documentation d'Apigee Edge.
Apigee permet de stocker des données dans un cache au moment de l'exécution pour assurer leur persistance et les récupérer plus rapidement.
Les données sont d'abord stockées dans le cache en mémoire du processeur de messages, appelé cache L1.
Le cache L1 est limité par la quantité de mémoire qui lui est réservée. Il s'agit d'un pourcentage de la mémoire JVM.
Les entrées mises en cache sont conservées dans un cache L2 accessible à tous les processeurs de message. Vous trouverez plus d'informations dans la section ci-dessous.
Le cache L2 n'a pas de limite stricte pour le nombre d'entrées de cache. Cependant, la taille maximale de chaque entrée est limitée à 256 ko.
Cette limite de 256 ko est la taille recommandée pour des performances optimales.
Antimodèle
Cet antimodèle particulier traite des conséquences du dépassement des restrictions de taille de cache actuelles dans Apigee.
Lorsque des données de plus de 256 ko sont mises en cache, les conséquences sont les suivantes :
Les requêtes d'API exécutées pour la première fois sur chacun des processeurs de messages doivent obtenir les données indépendamment de la source d'origine (règle ou serveur cible), car les entrées supérieures à 256 ko ne sont pas disponibles dans le cache L2.
Le stockage de données plus volumineuses (plus de 256 ko) dans le cache L1 a tendance à mettre davantage de contraintes sur les ressources de la plate-forme. La mémoire de cache L1 est remplie plus rapidement, ce qui réduit l'espace disponible pour d'autres données. Par conséquent, il n'est pas possible de mettre en cache les données de manière aussi dynamique que ce qui serait souhaitable.
Lorsque le nombre d'entrées est atteint, les entrées en cache des processeurs de message sont supprimées. Les données sont alors extraites à nouveau depuis la source d'origine sur les processeurs de message respectifs.
Impact
Les données d'une taille supérieure à 256 ko ne sont pas stockées dans le cache persistant L2.
Les appels plus fréquents à la source d'origine (règle ou serveur cible) augmentent la latence pour les requêtes d'API.
Bonne pratique
Il est préférable de stocker des données d'une taille inférieure à 256 ko dans le cache pour obtenir des performances optimales.
Si vous avez besoin de stocker des données supérieures à 256 ko, pensez à :
Utiliser une base de données adaptée au stockage de données volumineuses
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/09/04 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Difficile à comprendre","hardToUnderstand","thumb-down"],["Informations ou exemple de code incorrects","incorrectInformationOrSampleCode","thumb-down"],["Il n'y a pas l'information/les exemples dont j'ai besoin","missingTheInformationSamplesINeed","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/09/04 (UTC)."],[[["\u003cp\u003eApigee uses a two-tiered caching system (L1 and L2) to store data for persistence and faster retrieval, with L1 being an in-memory cache and L2 being a persistent cache accessible to all Message Processors.\u003c/p\u003e\n"],["\u003cp\u003eThe L2 cache has a size limit of 256 KB per entry for optimal performance, and exceeding this limit results in the data not being stored in L2.\u003c/p\u003e\n"],["\u003cp\u003eCaching data larger than 256 KB causes API requests to fetch data independently from the original source on each Message Processor, and it also stresses the L1 cache, leading to less space available for other data.\u003c/p\u003e\n"],["\u003cp\u003eStoring data under 256 KB is the preferred practice for optimal caching performance, and for data exceeding this size, consider using a database or compressing the data.\u003c/p\u003e\n"],["\u003cp\u003eExceeding the cache size limit increases the frequency of calls to the original source and results in higher API request latency.\u003c/p\u003e\n"]]],[],null,["# Antipattern: Store data greater than 256 KB size in cache\n\n*You're viewing **Apigee** and **Apigee hybrid** documentation.\nView [Apigee Edge](https://docs.apigee.com/api-platform/antipatterns/caching-large) documentation.*\n\nApigee provides the ability to store data in a cache at runtime for persistence and faster\nretrieval.\n\n- The data is initially stored in the Message Processor's in-memory cache, referred to as *L1\n cache*.\n- The L1 cache is limited by the amount of memory reserved for it as a percentage of the JVM memory.\n- The cached entries are later persisted in *L2 cache*, which is accessible to all Message Processors. More details can be found in the section below.\n- The L2 cache does not have any hard limit on the number of cache entries, however the maximum *size* of the entry that can be cached is restricted to 256 KB. The cache size of 256 KB is the recommended size for optimal performance.\n\nAntipattern\n-----------\n\nThis particular antipattern talks about the implications of exceeding the current cache size\nrestrictions within Apigee.\n\nWhen data \\\u003e 256 KB is cached, the consequences are as follows:\n\n- API requests executed for the first time on each of the Message Processors need to get the data independently from the original source (policy or a target server), as entries \\\u003e 256 KB are not available in L2 cache.\n- Storing larger data (\\\u003e 256 KB) in L1 cache tends to put more stress on the platform resources. It results in the L1 cache memory being filled up faster and hence lesser space being available for other data. As a consequence, one will not be able to cache the data as aggressively as one would like to.\n- Cached entries from the Message Processors will be removed when the limit on the number of entries is reached. This causes the data to be fetched from the original source again on the respective Message Processors.\n\nImpact\n------\n\n- Data of size \\\u003e 256 KB will not be stored in L2/persistent cache.\n- More frequent calls to the original source (either a policy or a target server) leads to increased latencies for the API requests.\n\nBest practice\n-------------\n\n- It is preferred to store data of size \\\u003c 256 KB in cache to get optimum performance.\n- If there's a need to store data \\\u003e 256 KB, then consider:\n - Using any appropriate database for storing large data **OR**\n\n - Compressing the data\n\nFurther reading\n---------------\n\n- [Cache internals](/apigee/docs/api-platform/cache/cache-internals)"]]