情景是将数据保存在缓存中。我们有许多用复杂逻辑编写的express路由。
我必须找到一种方法来保存响应数据在缓存中。我不能去检查每个路由是否需要保存并在发送响应之前保存数据。(如果没有其他办法,那么这可能是唯一的方法)
我尝试过以下方法。
之所以在每个路由中添加逻辑是繁琐的工作,是因为我需要添加一个配置项来指定哪些路由需要缓存和过期时间。
响应需要缓存在Redis服务器中。基于路由数据和查询字符串,将生成缓存键。所有完整的用户特定信息都将保存在一个键中。
因此,当用户访问相同的路由时,将生成键来检查它是否已存在,并且数据将被提供而不会继续执行后续中间件。
我必须找到一种方法来保存响应数据在缓存中。我不能去检查每个路由是否需要保存并在发送响应之前保存数据。(如果没有其他办法,那么这可能是唯一的方法)
我尝试过以下方法。
- https://nodejs.org/api/http.html#http_event_close_1 - 使用'close'或'finish',在发送响应后会触发,但我无法在这些事件中获取响应数据。
- 此外,我的node版本是v0.10.31
- 考虑使用app.all('*', callback),但不确定如何捕获缓存的响应数据。
- 最后我想添加第二个回调函数进行路由,app.VERB(path, [callback...], callback),但在第一个回调函数返回响应后,第二个回调函数从未被调用。
之所以在每个路由中添加逻辑是繁琐的工作,是因为我需要添加一个配置项来指定哪些路由需要缓存和过期时间。
响应需要缓存在Redis服务器中。基于路由数据和查询字符串,将生成缓存键。所有完整的用户特定信息都将保存在一个键中。
因此,当用户访问相同的路由时,将生成键来检查它是否已存在,并且数据将被提供而不会继续执行后续中间件。
app.use
来检查URL并输出适当的头文件以缓存内容。而你所说的 "cache" 是指仅仅在express中保存数据,还是实际上浏览器缓存或其他? - adeneo