koa-incache

Koa cache middleware

Usage no npm install needed!

<script type="module">
  import koaIncache from 'https://cdn.skypack.dev/koa-incache';
</script>

README

koa-incache

Koa cache middleware

Installation

Koa-incache requires koa2 and node v7.6.0 or higher

npm install koa-incache --save

Example

Basic usage

const cache = require('koa-incache');
const koa = require('koa');
const app = new koa();

app.use(cache());

app.use(ctx=>{
    const result = 'hello world';
    ctx.cached(result);
    ctx.body = result;
});

app.listen(3000);

Routing

The cache is made using ctx.originalUrl as key

const fs = require('fs');
const cache = require('koa-incache');
const koa = require('koa');
const Router = require('koa-router');
const app = new koa();
const router = new Router();

app.use(cache({
    maxAge: 60000 // 1 minute max age
}));

router.get('/this/is/cached', function (ctx, next) {
    const content = fs.readFileSync('myFile');
    ctx.cached(content);
    ctx.body = content;
});

router.get('/this/is/not/cached', function (ctx, next) {
    const content = fs.readFileSync('myFile');
    ctx.body = content;
});

router.get('/uncache', function (ctx, next) {
    const content = fs.readFileSync('myFile');
    ctx.cached(content);
    
    if(foo)
        ctx.uncache();
    
    ctx.body = content;
});

app
    .use(router.routes())
    .use(router.allowedMethods());

app.listen(3000);

Access to InCache instance

From koa context it's possible get InCache by ctx.cache

router.get('/my/root', function (ctx, next) {
    ctx.cache.set('my key', 'my value');
    //...
});

API context

  • cached accept an argument that is the content to be stored
  • uncache remove cache for context root

For more info about InCache click here

Changelog

You can view the changelog here

License

koa-incache is open-sourced software licensed under the MIT license

Authors

Fabio Ricali

Davide Polano