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 caches -
Pragma
- Included for backwards compatibility with HTTP/1.0 caches, was used by Internet Explorer -
Surrogate-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 v3.x support, use fastify-disablecache@2.0.8
.
Example usage
const Fastify = require("fastify");
const disableCache = require("fastify-disablecache");
const server = Fastify();
server.register(disableCache);
server.get("/", (req, res) => {
res.send("ok");
});
await server.listen({ port: 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
- Evan Hahn - nocache developer
- Matteo Collina - Optimisation suggestions
- Uzlopak - TypeScript support
License
fastify-disablecache
is licensed under the MIT license.