Node.js NodeJS-Express:每个页面上通用数据元素的模式

Node.js NodeJS-Express:每个页面上通用数据元素的模式,node.js,caching,express,Node.js,Caching,Express,对于站点上所有页面上的持久和通用页面元素,是否有推荐的模式?例如,在每一页的顶部都有一个“销售的总单位”。您将缓存该值并每隔一小时左右更新一次缓存,但您实际从何处检索该值并将其传递给express web请求中的视图 在PHP中,您必须使用密钥存储,但由于节点在请求之间是持久的,所以您似乎会将值保留在内存中,但在哪里呢 有几点想法: 1) 在app对象中,从express()开始,通过render传递到view。我认为app.locals就是为此而设计的,但是app.locals不能从路由处理程

对于站点上所有页面上的持久和通用页面元素,是否有推荐的模式?例如,在每一页的顶部都有一个“销售的总单位”。您将缓存该值并每隔一小时左右更新一次缓存,但您实际从何处检索该值并将其传递给express web请求中的视图

在PHP中,您必须使用密钥存储,但由于节点在请求之间是持久的,所以您似乎会将值保留在内存中,但在哪里呢

有几点想法:

1) 在app对象中,从express()开始,通过render传递到view。我认为app.locals就是为此而设计的,但是app.locals不能从路由处理程序中访问

2) 使用缓存并将其传递给render查看-我不喜欢在每个路由处理程序中显式调用cache.getCommonValues,扩展对象,然后在render中再次传递它

3) 侵入渲染器并使用常见的东西扩展每个数据对象-可能很优雅,但是如何访问值以使用cronjob更新它们,或者当您只想在路由处理程序中检查一个值时。也不知道到底如何破解渲染器,在这种情况下,胡子

4) 将其存储在会话中-可能会变大,难以可靠地更新


还有其他想法吗?

app.locals
可以,是的,它可以通过
res.app.locals
在路由处理程序中获得。请求和响应都可以相互访问,也可以访问应用程序实例。

IMO#1黑客攻击值得任何努力#2和4导致不必要的膨胀和滞后#3更难实现,因此越简单越好。