Invalidez Astro par étiquette, en une ligne.
@canner-ca/astro-cache pose les en-têtes Cache-Control et Surrogate-Key dont Canner a besoin — correctement, à chaque fois — pour que vos pages rendues côté serveur soient mises en cache sur Canner et vidées par étiquette à la publication de votre CMS. Aucune dépendance. Fonctionne avec tout cadre qui parle l'API Web Headers.
Utilisation
Appelez cache() dans n'importe quelle route rendue côté serveur avec une durée et les étiquettes qui identifient le contenu de la page. C'est toute l'intégration côté code.
---
// src/pages/blog/[slug].astro
import { cache } from '@canner-ca/astro-cache';
const post = await getPost(Astro.params.slug);
cache(Astro.response, { ttl: 3600, tags: [post.id, 'blog-listing'] });
---Ce qui est posé
Cache-Control: public, s-maxage=3600 Surrogate-Key: <post.id> blog-listing
À la publication de l'article, le webhook DatoCMS purge l'id de l'enregistrement (Canner lit automatiquement l'enregistrement modifié) et Canner vide toutes les pages portant cette étiquette. Ajoutez une étiquette stable comme blog-listing à votre page d'index pour la vider aussi.
Options
ttlObligatoire. Secondes pendant lesquelles Canner peut servir la réponse en cache — pose s-maxage.tagsChaîne, nombre ou tableau. Pose Surrogate-Key. Les nombres sont convertis; les doublons et les étiquettes avec espaces sont écartés.browserTtlOptionnel. Secondes de cache côté navigateur (pose max-age). Omettez-le pour garder les purges instantanées.Ce que Canner met en cache
Une réponse n'est mise en cache que si toutes ces conditions sont vraies — les règles mêmes que cet utilitaire produit :
- GET ou HEAD, statut 200
- Cache-Control: public avec un s-maxage positif (ou max-age)
- aucun Set-Cookie
- Vary absent ou uniquement Accept-Encoding
- corps de moins de 8 Mo
Il ne fait qu'ajouter des en-têtes
L'utilitaire ne retire ni ne modifie jamais ce que votre application a posé. Il ne supprime pas Set-Cookie — Canner refuse déjà de mettre en cache une réponse qui pose un témoin, donc si vous marquez une telle route comme cachable, vous obtenez un avertissement en développement et votre témoin reste intact. Une durée invalide ne pose aucun en-tête et avertit; seule une valeur qui n'est ni une Response ni des Headers lève une erreur.
Puis dirigez votre CMS vers Canner
Le côté code est terminé. L'autre moitié, ce sont deux valeurs à copier — l'URL du webhook et un en-tête Authorization — affichées préremplies dans le tableau de bord sous Réglages → Cache. Aucun corps de requête nécessaire; Canner lit automatiquement la charge utile DatoCMS. Guide complet du cache.
Code source et problèmes : tools/astro-cache/ dans le dépôt canner sur GitHub. Sous licence MIT.