routebox-ft
v2.0.0
Published
Transparent catbox-based response caching for Hapi servers
Downloads
1
Readme
Routebox
Routebox integrates with catbox to provide transparent route-level caching. It can work with zero configuration changes on your server.
Usage
To Routebox, simply register it on your server.
server.register(require('routebox'), function (err) {
// ...
});
By default, all endpoints with the cache
configured in their route options and privacy
set to public
(or omitted; public is the default) will be cached. Routebox automatically hooks in to the expiresAt
, expiresIn
, and statuses
options of the caching config.
These options are available when routebox is registered and can also be overridden on a per-route basis by passing in config.plugins.routebox
:
cache
corresponds to the cache name for response caches. Uses the server's default if not given.enabled
whether to enable caching on the endpoint. Defaults totrue
, meaning all viable (see above) endpoints will be cached.digest
defaults todjb2
, this is the algorithm used to digest the request for caching purposes. Other available options are:md5
,sha1
,sha256
,sha512
,ripemd160
.segment
is the Catbox cache segment to store in. Defaults toroutebox
wasCachedHeader
header that gets sent down when we serve a cached response. Defaults toX-Was-Cached
.parse
configures which parts of the request will be used to form the cache key:query
whether to include the query string. Defaults totrue
.method
whether to include the request method. Defaults totrue
.path
whether to include the route path. Defaults totrue
.
callbacks
provides touch-points you can use to intercept the request and gather metrics. Each callback functions like a Hapi extension, taking the(request, reply)
as arguments, after which you should callreply.continue()
. These are called at theonPreResponse
lifecycle point.onCacheHit
is called when a cached page is served.onCacheMiss
is called when a page that could be cached but is not (yet) is served.auth
will skip caching if a user has been authenticated. Defaults tofalse
, meaning always cache regardless of whether there is a request.auth object.
In addition there is one other setting that can be specified only in config.plugins.routebox
:
pluginCache
can be used to set cache options instead of config.cache. So caching works as specified byconfig.plugins.routebox.pluginCache
, but cache-control directives aren't sent out to the browser. If there's an endpoint that can sometimes provide private data, you can callrequest.nocache()
to prevent Routebox from caching the request.