Aller au contenu

Caching

Lacis fournit deux APIs de cache : basée sur un middleware (createResponseCache) et par enveloppement de handler (withCache).

createResponseCache enregistre un middleware qui met en cache les réponses avant qu’elles soient envoyées. Appliquez-le globalement ou par route.

import { createServer } from 'lacis'
import { createResponseCache } from 'lacis'
createServer('./routes', {
middleware: {
beforeRequest: createResponseCache({ ttl: 60 }),
},
})
OptionTypeDéfautDescription
ttlnumberrequisDurée du cache en secondes
methodsstring[]['GET', 'HEAD']Méthodes HTTP à cacher
maxSizenumber500Entrées max avant éviction LRU
keyGenerator(req) => stringMETHOD:URLFonction de clé de cache
match(req) => booleanNe cache que si cette fonction retourne true
excludestring | string[]Préfixes de chemin à ignorer
shouldCache(req, res) => booleanCodes 2xxSi la réponse doit être stockée
createResponseCache({
ttl: 60,
exclude: ['/admin', '/api/private'],
})

withCache enveloppe un handler individuel. Utile quand vous voulez le cache sur une seule route sans middleware global.

import { withCache } from 'lacis'
import type { Request, Response } from 'lacis'
export const GET = withCache(
{ ttl: 300 },
async (req: Request, res: Response) => {
const data = await fetchExpensiveData()
res.json(data)
}
)
OptionTypeDéfautDescription
ttlnumberrequisDurée du cache en secondes
maxSizenumber500Entrées max avant éviction LRU
key(req) => stringMETHOD:URLFonction de clé de cache

Quand maxSize est atteint, les 50 entrées les moins récemment utilisées sont évincées d’un coup. Les entrées expirent aussi individuellement selon le ttl.