首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Express.js: app.locals vs res.locals vs req.session

Express.js: app.locals vs res.locals vs req.session
EN

Stack Overflow用户
提问于 2013-03-08 13:21:11
回答 1查看 12.4K关注 0票数 19

我试图理解什么时候最好使用以下每一种方法。以下是我的基本理解:

app.locals --很适合在应用程序级别存储全局变量。所有用户/会话都会看到这些变量的相同值。所有视图都可以使用这些变量。

res.locals --用于存储特定请求/响应周期的变量。这些变量仅可用于与响应关联的视图。

req.session --用于存储与唯一用户会话相关的变量(例如用户名)。这些变量应该可供唯一用户/会话的所有视图使用。

我拥有的具体用例如下:用户运行查询,从mongodb检索数据。我现在想要这个查询的结果,它是一个JSON数组,可以作为变量提供给所有视图(HTTP请求)。“存储”结果数组的最佳方法是什么,以便每个视图都可以访问它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-08 15:06:28

我现在想要这个查询的结果,它是一个json数组,可以作为所有视图的变量。“存储”结果数组的最佳方法是什么,以便每个视图都可以访问它?

当您说“所有视图都可用”时,我假设您指的是跨所有HTTP请求。如果是这样的话,那么您需要意识到HTTP是一个无状态协议,并且没有提供这种协议。你需要为此开发自己的机制。

这样做的一种方法是在服务器上缓存这个信息(数组),并在每个请求中检索它(例如,从内存而不是从MongoDB中检索它)。您将在cookie上存储一个会话ID,并根据这个ID在另一个请求通过时从缓存中获取它。有几种可用的缓存工具(例如redis、memcached等),您可以选择将这些信息存储在内存中。

您还可以对此信息(数组本身)进行cookie,在这种情况下,它将在每个HTTP请求上在客户端和服务器之间来回发送,除非数据非常小,否则很可能不是一个好主意。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15294941

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档