Manage and build HTTP Cache-Control
headers.
- TypeScript, with TSDoc for directives
- Create presets for reusable cache policies
- Parse
Cache-Control
headers from requests and extend them - Lightweight, with no dependencies
npm install ctrlcache
Create cache policies and use them in your responses.
export const cacheShort = new CacheControl({
maxAge: 60,
staleWhileRevalidate: 60,
});
new Response("data", {
headers: { "Cache-Control": cacheShort.serialize() },
});
// Other APIs
CacheControl.parse("max-age=60, stale-while-revalidate=60");
CacheControl.serialize({
maxAge: 60,
staleWhileRevalidate: 60,
});
You can also easily manage cache control from headers of an external response.
const res = await fetch("https://example.com");
const cacheControl = CacheControl.parse(res.headers.get("Cache-Control"));
// Update the cache control settings
cacheControl.settings.maxAge = 60;
return new Response(res.body, {
headers: { "Cache-Control": cacheControl.serialize() },
});
For a list of all supported directives, see the CacheControlSettings type definition.
We also export functions to parse and serialize cache control headers.
// Parse a cache control header
// Alias CacheControl.parse
function parseCacheControl(header: string): CacheControlSettings;
// Serialize a cache control settings object to a string
// Alias CacheControl.serialize
function serializeCacheControl(settings: CacheControlSettings): string;