fastify-disablecache
Fastify plugin to disable client-side caching
Intro
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 at Yeovil District Hospital NHS Foundation Trust. This ensures patient 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, certain 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 install fastify-disablecache
Or yarn
:
yarn add fastify-disablecache
fastify-disablecache's test scripts use npm commands.
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);
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
License
fastify-disablecache
is licensed under the MIT license.