serviceberry-cache-control
v0.2.3
Published
A Cache Control plugin for Serviceberry
Downloads
122
Maintainers
Readme
serviceberry-cache-control
Cache control plugin for Serviceberry.
Install
npm install serviceberry-cache-control
Usage
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-store
directive is set in theCache-Control
response header. Defaults tofalse
.noCache boolean
When true the
no-cache
directive is set in theCache-Control
response header. Defaults tofalse
.mustRevalidate boolean
When true the
must-revalidate
directive is set in theCache-Control
response header. Defaults tofalse
.public boolean
When true the
public
directive is set in theCache-Control
response header. Defaults tofalse
.private boolean
When true the
private
directive is set in theCache-Control
response header. Defaults tofalse
.maxAge number
When greater than
0
themax-age
directive is set in theCache-Control
response 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
Vary
response 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.