serviceberry-cache-control v0.2.4
serviceberry-cache-control
Cache control plugin for Serviceberry.
Install
npm install serviceberry-cache-controlUsage
This plugin exports an abstract class CacheControl for extending by your
class that knows how to get ETags and Last Modified for the requested resource.
To use this plugin extend CacheControl and implement at least getETag(request, response)
or getLastModified(request, response). The ETag or Last Modified is then used
to validate the client cache using information passed in request headers.
This plugin sets a Cache-Control response header describing how the response
should be cached based on the plugin options and halts the request and responds
with a 304 Not Modified status if the cache validates using the ETag or Last
Modified as described above.
const CacheControl = require("serviceberry-cache-control");
class Caching extends CacheControl {
getETag (request) {
return data.getETag(request.getUrl()); // can also return a promise or use async/await
}
}
trunk.use(new Caching(options));Options
noStore boolean
When true the
no-storedirective is set in theCache-Controlresponse header. Defaults tofalse.noCache boolean
When true the
no-cachedirective is set in theCache-Controlresponse header. Defaults tofalse.mustRevalidate boolean
When true the
must-revalidatedirective is set in theCache-Controlresponse header. Defaults tofalse.public boolean
When true the
publicdirective is set in theCache-Controlresponse header. Defaults tofalse.private boolean
When true the
privatedirective is set in theCache-Controlresponse header. Defaults tofalse.maxAge number
When greater than
0themax-agedirective is set in theCache-Controlresponse header. Defaults toNaN.vary array
An array of header field names that might may vary the response and should be considered by caches. Values are appended to the
Varyresponse header.Defaults to
[].
CacheControl
Abstract class
constructor(options)
options
Sets
this.options. See options above.
getETag(request, response)
You should extend this class and at least implement this method or getLastModified().
Called by the setETag method for fetching an ETag to be set as a response headers
and used to validate the cache. This can be an async function or it can return a promise.
It should return an ETag string or eventually resolve to one.
getLastModified(request, response)
You should extend this class and at least implement this method or getETag().
Called by the validate method for fetching the date the requested resource
was last modified to be used to validate the cache. This can be an async function
or it can return a promise. It should return an ETag string or eventually resolve to one.
use(request, response)
The handler method. This is the method called by Serviceberry. This is an async function.
If it determines the response status should be 304 Not Modified the request will be
halted and the response sent with a 304 status.
validate(request, response)
Called by the use method to validate the cache. This is an async function.