使用superagent-cache为不同的参数缓存HTTP响应

时间:2016-04-27 12:24:25

标签: javascript node.js caching superagent

我使用superagent-cache在Node Express服务器上缓存响应。 所以请求是这样的:

myServer.com/api/posts?id=21

缓存完美无缺。一旦Node从API服务器获取响应,它就会将相同的数据传递给所有访问用户,而不是一次又一次地调用API。

现在问题是我想在请求中添加用户ID。所以新请求变为:

myServer.com/api/posts?id=21&userId=123

现在缓存变得特定于用户。 Superagent将其作为单独的请求,并且每次为每个用户提取它。这是多余的。有什么方法可以让superagent避免userId param?

1 个答案:

答案 0 :(得分:1)

我是superagent-cache的作者。很高兴你很享受!

您可以使用.pruneQuery chainable执行具有给定参数的查询,但在没有该参数的情况下将其作为生成密钥的一部分进行缓存。

您的新代码应如下所示:

superagent
  .get('myServer.com/api/posts')
  .query({id: id, userId: userId})
  .pruneQuery(['userId'])
  .end(function (error, response){
    // handle response
  }
);