node-staticize
Router staticize for express
SUPPORTS:
USE:
Cache:
- api result
- api view/render
Install
npm install node-staticize
Example
To use staticize in you module, simply import it:
var Staticize = ;
And set it (use memory or redis or others):
var 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: 3cors: 'http://yoursite.com' // allow 'http://yoursite.com' CORS access'/cacheCorsForAll':ttl: 3cors: '*' // "*" to allow all domains CORS access;
Then you can create a middleware:
staticize // set cache seconds, default 0 to skip
Use it:
- expressjs:
app;app;app;app;app;
- sailsjs:
// create a staticize.js under /policies...moduleexports = staticize;...// set it in policies.js...'StaticizeController':'test30s': 'staticize'...
new Staticize(options)
options.cache
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 'Unsupported cache adapter: ' + adapter;
[options.routes]
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
API
.cacheMiddleware(cacheTTL, skip, fn)
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.
Test
Run npm test
.
Debug
Using debug.
LICENSE
MIT