Router staticize for express
SUPPORTS:
USE:
Cache:
- api result
- api view/render
npm install node-staticize
To use staticize in you module, simply import it:
var Staticize = require('staticize');
And set it (use memory or redis or others):
var staticize = new Staticize({
cache : {
adapter: 'redis',
options: {
host: '127.0.0.1',
port: '6379'
}
},
routes: {
'/cache2s' : 2, // default GET method
'get /cache3s': 3,
'post /cache3s': 3,
'get /foo/:bar': 5, // match /foo/whatever
'/cacheCors': {
ttl: 3,
cors: 'http://yoursite.com' // allow 'http://yoursite.com' CORS access
},
'/cacheCorsForAll': {
ttl: 3,
cors: '*' // "*" to allow all domains CORS access
}
}
});
Then you can create a middleware:
staticize.cacheMiddleware() // set cache seconds, default 0 to skip
Use it:
- expressjs:
app.use(staticize.cacheMiddleware());
app.use('/cache4s', staticize.cacheMiddleware(4));
app.use('/cacheCors', staticize.cacheMiddleware({ ttl: 3, cors: '*' }));
app.get('/*', function (req, res) {
res.json({
time: new Date().toLocaleString()
});
});
app.listen(3000);
- sailsjs:
// create a staticize.js under /policies
...
module.exports = staticize.cacheMiddleware(30);
...
// set it in policies.js
...
'StaticizeController': {
'test30s': ['staticize']
}
...
cache config, include:
options.cache.adapter
: typestring
, such asmemory
redis
...options.cache.options
: typeobject
, if not usememory
adapter, need to connect to Adapter, for example:
{
...
cache: {
adapter: 'redis',
options: {
host: '127.0.0.1',
port: 6379
}
}
...
}
if given an unsupported adapter
would throw a TypeError
:
throw new Error('Unsupported cache adapter: ' + adapter);
object
, key
is 'uri'
or '${http method} uri'
, value
is cache seconds.
- When
staticize.cacheMiddleware(30)
with attl
, staticize will use thisttl
and NOT search inoption.routes
. - When
staticize.cacheMiddleware()
with nottl
, staticize will search inoption.routes
:- First search the
'uri' key
, found and return; - Then search the
'${http method} uri' key
, found and return; - if not, return 0.
- First search the
cacheTTL
is cache seconds.[skip]
is a RegExp, ifreq.originalUrl.match(skip)
, gotonext()
.fn
is a function of usingreq
to create a extension string adding to cache key.
Run npm test
.
Using debug.
MIT