Fastify plugin to disable client-side caching
Inspired by nocache, the fastify-disablecache
plugin sets the following response headers and values to disable client-side caching:
Cache-Control: no-store, max-age=0, must-revalidate
Expires: 0
Pragma: no-cache
Surrogate-Control: no-store
This plugin was created out of a need for an easy way to disable client-side caching for data received from backend APIs. This ensures data is always current when called by applications.
Cache-Control
- Primary response header for configuring cache controls since HTTP/1.1; whilstno-store
is the directive to disable caching, clients such as Internet Explorer did not use it, thus the addition ofmax-age=0, must-revalidate
Expires
- Included for backwards compatibility with HTTP/1.0 cachesPragma
- Included for backwards compatibility with HTTP/1.0 caches, was used by Internet ExplorerSurrogate-Control
- Not a standardised response header but is used by CDNs and reverse proxies for cache control
Install using npm
:
npm i fastify-disablecache
For Fastify v4.x support, use fastify-disablecache@3.1.9
.
const Fastify = require("fastify");
const disableCache = require("fastify-disablecache");
const server = Fastify();
server.register(disableCache);
server.get("/", (_req, res) => {
res.send("ok");
});
server.listen(3000, (err) => {
if (err) throw err;
console.log("Server listening on 3000");
});
Contributions are welcome, and any help is greatly appreciated!
See the contributing guide for details on how to get started. Please adhere to this project's Code of Conduct when contributing.
- Aras Abbasi - TypeScript support
- Evan Hahn - nocache developer
- Matteo Collina - Optimisation suggestions
fastify-disablecache
is licensed under the MIT license.