L'API Cache vous permet de mettre en cache des données sur les nœuds edge afin d'accélérer les réponses aux requêtes suivantes. Configurez la durée et la taille du cache pour contrôler les politiques de mise en cache.
Fonctionnement
L'API Cache intégrée aux Edge Routines (ER) met en cache les données traitées par ER ou récupérées depuis le serveur d'origine vers ESA pour une réutilisation par d'autres requêtes sur le même nœud. Cela réduit les calculs redondants et les requêtes réseau. La figure suivante illustre la relation entre ER et le cache ESA :
Norme de l'API
L'API Cache est conforme dans la mesure du possible à l'interface standard Cache. Toutefois, comme les Edge Routines réutilisent le moteur de cache existant d'ESA, la sémantique n'est pas entièrement cohérente.
Définition de l'API
cache.put(request/string, response)
-
Met en cache un objet Response dans le Cache.
Si l'opération put réussit, la promesse est résolue avec la valeur undefined.
En cas d'échec du moteur de Cache, la promesse est rejetée avec une exception d'erreur.
Si le quota du moteur de Cache est dépassé, la promesse est rejetée avec une exception d'erreur.
La clé de cache correspond à l'URL de l'objet request ou à une chaîne d'URL. (Utilisez des URL HTTP. Actuellement, en raison du moteur de cache ESA, les URL HTTPS ne sont pas prises en charge.)
Il s'agit d'une fonction asynchrone. Utilisez await pour vous assurer que l'opération put est terminée 。
Définissez l'en-tête cache-control sur l'objet Response pour configurer la durée de vie (TTL) du cache (l'en-tête cache-control respecte les normes de mise en cache).
cache.get(request/string)
Récupère un objet Response en utilisant la requête/chaîne spécifiée comme clé (si l'objet n'existe pas, la promesse est résolue avec la valeur undefined).
Il s'agit d'une fonction asynchrone. Utilisez await pour vous assurer que l'opération get est terminée.
L'opération get peut ne pas renvoyer l'objet qui vient d'être ajouté, car le cache utilise l'algorithme LRU et ne garantit pas que l'objet mis en cache sera toujours récupérable.
cache.delete(request/string)
-
Supprime un objet Response associé à la clé spécifiée.
Si la suppression réussit, la promesse est résolue avec la valeur true.
Si la suppression échoue, la promesse est résolue avec la valeur false.
Il s'agit d'une fonction asynchrone. Utilisez await pour vous assurer que l'opération delete est terminée.
Limites d'utilisation
Toutes les opérations de l'API Cache sont des sous-requêtes qui partagent la limite de sous-requêtes des ER. Par défaut, une seule requête ER prend en charge un maximum de 32 sous-requêtes fetch (ce nombre peut évoluer lors de la commercialisation des ER). Les opérations de l'API Cache partagent cette limite avec fetch, de sorte que le nombre total d'opérations cache.put + cache.get + cache.delete + fetch dans le contexte d'une seule requête ne peut pas dépasser 32.
-
Les opérations cache.put, cache.get et cache.delete sont soumises à un contrôle de concurrence. Pour une même URL, si une requête effectue une opération get tandis qu'une autre effectue une opération delete, l'opération peut renvoyer un statut pending car plusieurs requêtes concurrentes modifient la même clé. Attendez et réessayez dans ce cas.
RemarqueLorsque cache.put, cache.get ou cache.delete rejette la promesse avec la valeur true, cela indique que l'opération est soumise au contrôle de concurrence.
Actualisation du cache
L'API Cache ne prend actuellement pas en charge l'actualisation active du cache. Spécifiez une durée de cache appropriée en utilisant le paramètre TTL lors de l'appel à Cache.put().