cacher-pro v1.2.2
Cacher Pro
Middleware for intelligence cache system using memory, filesystem, redis or mongoDB with NodeJS Frameworks
Usage
Very simple, only you need to:
- instance the cacher-pro passing a storage client (ex.: redis) as option
- and pass the handle function as a middleware in your routes
import express from 'express';
import redis from 'redis';
import cacher from 'cacher-pro';
const app = express();
const cacherMidlleWare = cacher({
redis : redis.createClient()
});
var fruits = ['orange', 'banana', 'apple'];
app.get('/fruits', cacherMidlleWare.handle, (req : any, res : any)=>{
res.json({'result' : fruits});
});
app.get('/fruits/:id', cacherMidlleWare.handle, (req : any, res : any)=>{
res.json({'result' : fruits[req.params.id]});
});
app.post('/fruits', cacherMidlleWare.handle, (req : any, res : any)=>{
if(req.body.fruit){
fruits.push(req.body.fruit);
res.json("[POST] - Fruit inserted!");
}
});
app.listen(3333, ()=>console.log("Running Server [Using Cacher Pro]"));
Cacher-pro release the cache memory when its detect a write operation POST
, PUT
, PATCH
or DELETE
to the cached resource
For use the prefix api
you can configure cacher-pro with the .cacher.json
configuration file.
When the write operations in a resource affects others resources read results you can configure it using the mutual_resources
properties. Its also recommended to use mutual_resources
for api's
that don't uses strictly the REST pattern
{
"debug" : false, //optional, set to true for see logs info
"api_prefix" : "api/v1", //optional, you may use the "api/*" value for all version configuration
"mutual_resources" : [
["fruits", "trees"],
["persons", "people"]
]//optional
}
For development or testing environment you may not pass the storage
client and it will use the memory storage
. Its supports the following storages clients:
- Memory (default)
- Redis (recomended)
Configuration and Options
const options = {
redis : redis.createClient()
}
const cacherMidlleWare = cacher(options);
redis
- theredis
storage client
License
Authors
Kissema Eduardo Rafael (kissema1@gmail.com)
Sponsored By