cacheLife
La fonction cacheLife
permet de définir la durée de vie du cache pour une fonction ou un composant. Elle doit être utilisée conjointement avec la directive use cache
, et dans la portée de la fonction ou du composant.
Utilisation
Pour utiliser cacheLife
, activez le flag dynamicIO
dans votre fichier next.config.js
:
Ensuite, importez et invoquez la fonction cacheLife
dans la portée de la fonction ou du composant :
Référence
Profils de cache par défaut
Next.js fournit un ensemble de profils de cache prédéfinis basés sur différentes échelles de temps. Si vous ne spécifiez pas de profil de cache dans la fonction cacheLife
avec la directive use cache
, Next.js appliquera automatiquement le profil default
.
Cependant, nous recommandons de toujours ajouter un profil de cache lors de l'utilisation de la directive use cache
pour définir explicitement le comportement de mise en cache.
Profil | stale | revalidate | expire | Description |
---|---|---|---|---|
default | 5 minutes | 15 minutes | 1 an | Profil par défaut, adapté au contenu ne nécessitant pas de mises à jour fréquentes |
seconds | 0 | 1 seconde | 1 seconde | Pour un contenu changeant rapidement nécessitant des mises à jour quasi temps réel |
minutes | 5 minutes | 1 minute | 1 heure | Pour un contenu mis à jour fréquemment dans l'heure |
hours | 5 minutes | 1 heure | 1 jour | Pour un contenu mis à jour quotidiennement mais pouvant être légèrement obsolète |
days | 5 minutes | 1 jour | 1 semaine | Pour un contenu mis à jour hebdomadairement mais pouvant avoir un jour de retard |
weeks | 5 minutes | 1 semaine | 30 jours | Pour un contenu mis à jour mensuellement mais pouvant avoir une semaine de retard |
max | 5 minutes | 30 jours | 1 an | Pour un contenu très stable nécessitant rarement des mises à jour |
Les valeurs textuelles utilisées pour référencer les profils de cache n'ont pas de signification intrinsèque ; elles servent plutôt d'étiquettes sémantiques. Cela vous permet de mieux comprendre et gérer votre contenu mis en cache dans votre base de code.
Bon à savoir : La mise à jour des options de configuration
staleTimes
etexpireTime
met également à jour les propriétésstale
etexpire
du profil de cachedefault
.
Profils de cache personnalisés
Vous pouvez configurer des profils de cache personnalisés en les ajoutant à l'option cacheLife
dans votre fichier next.config.ts
.
Les profils de cache sont des objets contenant les propriétés suivantes :
Propriété | Valeur | Description | Exigence |
---|---|---|---|
stale | number | Durée pendant laquelle le client doit mettre en cache une valeur sans interroger le serveur. | Optionnel |
revalidate | number | Fréquence à laquelle le cache doit être actualisé sur le serveur ; des valeurs obsolètes peuvent être servies pendant la revalidation. | Optionnel |
expire | number | Durée maximale pendant laquelle une valeur peut rester obsolète avant de passer à une récupération dynamique ; doit être plus longue que revalidate . | Optionnel - Doit être plus longue que revalidate |
La propriété "stale" diffère du paramètre staleTimes
en ce qu'elle contrôle spécifiquement la mise en cache côté client du routeur. Alors que staleTimes
est un paramètre global affectant toutes les instances de données dynamiques et statiques, la configuration cacheLife
vous permet de définir des temps "stale" par fonction ou par route.
Bon à savoir : La propriété "stale" ne définit pas l'en-tête
Cache-control: max-age
. Elle contrôle plutôt le cache du routeur côté client.
Exemples
Définition de profils de cache réutilisables
Vous pouvez créer des profils de cache réutilisables en les définissant dans votre fichier next.config.ts
. Choisissez un nom adapté à votre cas d'utilisation et définissez des valeurs pour les propriétés stale
, revalidate
et expire
. Vous pouvez créer autant de profils de cache personnalisés que nécessaire. Chaque profil peut être référencé par son nom sous forme de chaîne de caractères passée à la fonction cacheLife
.
L'exemple ci-dessus met en cache pendant 14 jours, vérifie les mises à jour quotidiennement et expire le cache après 14 jours. Vous pouvez ensuite référencer ce profil dans toute votre application par son nom :
Surcharge des profils de cache par défaut
Bien que les profils de cache par défaut fournissent un moyen utile de penser à la fraîcheur ou à l'obsolescence de toute partie du contenu pouvant être mise en cache, vous pouvez préférer des profils nommés différents pour mieux correspondre à vos stratégies de mise en cache.
Vous pouvez remplacer les profils de cache nommés par défaut en créant une nouvelle configuration portant le même nom que les profils par défaut.
L'exemple ci-dessous montre comment remplacer le profil de cache par défaut "days" :
Définition de profils de cache en ligne
Pour des cas d'utilisation spécifiques, vous pouvez définir un profil de cache personnalisé en passant un objet à la fonction cacheLife
:
Ce profil de cache en ligne ne sera appliqué qu'à la fonction ou au fichier dans lequel il a été créé. Si vous souhaitez réutiliser le même profil dans toute votre application, vous pouvez ajouter la configuration à la propriété cacheLife
de votre fichier next.config.ts
.
Utilisation imbriquée de use cache
et cacheLife
Lorsque vous définissez plusieurs comportements de mise en cache dans la même route ou arborescence de composants, si les caches internes spécifient leur propre profil cacheLife
, le cache externe respectera la durée de cache la plus courte parmi eux. Cela s'applique uniquement si le cache externe n'a pas son propre profil cacheLife
explicitement défini.
Par exemple, si vous ajoutez la directive use cache
à votre page sans spécifier de profil de cache, le profil de cache par défaut sera appliqué implicitement (cacheLife(”default”)
). Si un composant importé dans la page utilise également la directive use cache
avec son propre profil de cache, les profils de cache externe et interne sont comparés, et la durée la plus courte définie dans les profils sera appliquée.
Et dans un fichier séparé, nous avons défini le composant enfant qui a été importé :