Node.js:在koajs中以简单的形式缓存响应

时间:2019-07-10 10:18:05

标签: node.js express caching koa

上面的链接包含一个express代码,您可以对其进行缓存,如下所示。

const mcache = require('memory-cache');

const cache = (duration = 5) => {
  return (req, res, next) => {
    let key = `${req.originalUrl}`;
    let cachedBody = mcache.get(key);
    console.log(cachedBody);
    if (cachedBody) {
      res.send(cachedBody);
    } else {
      res.sendResponse = res.send;
      res.send = body => {
        mcache.put(key, body, duration * 1000);
        res.sendResponse(body);
      };
      next();
    }
  };
};

我更改了上面的代码,以便可以在koa中使用它。

const mcache = require('memory-cache');

const cache = async (ctx, next, duration = 5) => {
  let key = `${req.originalUrl}`;
  let cachedBody = mcache.get(key);
  console.log(cachedBody);
  if (cachedBody) {
    ctx.body = cachedBody;
  } else {
    ctx.body = mcache.put(key, ctx.body, duration * 1000);
    next();
  }
};

不过,cachedBody仍然是null

  1. 如何使示例代码在koa中运行?
  2. 我可以基本上将函数res.send()更改为对象类型ctx.body来使缓存起作用吗?
  3. 如果没有,如何在koa中进行缓存?

我将不胜感激任何评论或答案。

0 个答案:

没有答案