fastify-disablecache
v4.0.0
Published
Fastify plugin to disable client-side caching
Downloads
12,216
Maintainers
Readme
fastify-disablecache
Fastify plugin to disable client-side caching
Overview
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.
Why these headers?
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
Installation
Install using npm
:
npm i fastify-disablecache
For Fastify v4.x support, use [email protected]
.
Example usage
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");
});
Contributing
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.
Acknowledgements
- Aras Abbasi - TypeScript support
- Evan Hahn - nocache developer
- Matteo Collina - Optimisation suggestions
License
fastify-disablecache
is licensed under the MIT license.