Hapi Cache Manager plugin
Manage your Catbox cache through REST endpoints and server methods.
namespace
- (Default:cache
) Namespace for methods registered by the plugin.dependencies
- (Default:[]
) An array of plugin name strings that must be registered before cache managerinvalidate
- Cache invalidation options objectpath
- (Default:/cache/invalidate
) Server endpoint to expose through DELETE methodauth
- (Default:false
) Hapi auth strategy to use for cache invalidation endpoint
statistics
- Cache statistics options objectpath
- (Default:/cache/statistics
) Server endpoint to expose through GET methodauth
- (Default:false
) Hapi auth strategy to use for cache statistics endpoint
const Hapi = require('hapi');
const CacheManager = require('hapi-cache-manager');
const server = new Hapi.Server();
server.connection({ port: 3000 });
server.register({
register: CacheManager,
options: { // default options
namespace: 'cache', // server methods namespace
dependencies: [], // plugin dependencies
invalidate: {
path: 'cache/invalidate', // cache invalidation endpoint
auth: false // cache invalidation auth strategy
},
statistics: {
path: 'cache/statistics', // cache invalidation endpoint
auth: false // cache invalidation auth strategy
}
}
}, (err) => {
if (err) {
throw err;
}
});
server.start((err) => {
if (err) {
throw err;
}
console.log('Server started');
});
You can get cache statistics for a single method or for all methods registered on the server:
# get statistics for all methods
curl http://localhost:3000/cache/statistics
# {
# 'somemethod': {
# sets: 0, gets: 2, hits: 1, stales: 0, generates: 1, errors: 0
# },
# 'someothermethod': { ... } }
# get statistics for a single method
curl http://localhost:3000/cache/statistics\?name\=somemethod
# {
# sets: 0, gets: 3, hits: 2, stales: 0, generates: 1, errors: 0
# }
You can drop as many cached keys for as many methods as you want with either a single external request or internally by calling a server method.
const payload = {
data: [
{ name: 'methodname', keys: ['blabla', '123'] },
{ name: 'someothermethodname', keys: ['abc'] },
{ ... }
]
};
// through REST
server.inject({ method: 'DELETE', url: '/cache/invalidate', payload: payload }, (res) => {
console.log(res.statusCode)
// 204
console.log(res.payload == '');
// true
});
// through server method
server.methods.cache.invalidate(payload, (err, res) => {
});
MIT Public License.