0

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/(工作人员数量)的概率没有到达收件人。我无法对此进行测试,但这是一件重要的事情。这是真的还是我错了?

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

4

1 回答 1

2

express-flash 是否适用于集群?

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

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

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

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


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

于 2022-01-01T18:58:46.583 回答