res.locals 在使用集群时会起作用吗?

Will res.locals work when using clusters?

https://nodejs.org/api/cluster.html https://github.com/RGBboy/express-flash/blob/master/lib/express-flash.js

express-flash 和 connect-flash 只是 res.locals 的附加组件。 res.locals 的问题是,如果我使用集群,那么理论上,消息有 1/(num of workers) 的概率没有到达收件人。我无法测试这一点,但这是一件重要的事情。这是真的还是我错了?

原来最好的办法就是用req.session收发消息?

Will express-flash work with clustering?

这取决于您是否 运行 兼容集群的会话中间件。

express-flash 模块使用 connect-flash 模块,该模块在 req.session 中存储其即显消息。因此,对于能够访问 flash 消息的未来请求(通常是重定向),必须保留用户的会话。

因此,如果您使用的是与集群兼容的会话实现,那么 express-flash 也将适用于集群。如果您没有配置任何会话支持,或者您使用的会话与集群不兼容(例如,不是基于所有集群进程都可以访问的某些集中式存储),那么 express-flash 将无法正常工作。

因此,这取决于您是否 运行 集群兼容会话。


仅供参考,这与 res.locals 没有任何关系,因为它不是存储闪存数据的地方(因为它是一个临时对象,仅在一个请求期间存在)。这只是 Flash 中间件在有传入请求时将数据放置在最后的位置,以便模板可以根据需要访问它。