我试图理解什么时候最好使用以下每一种方法。以下是我的基本理解:
app.locals --很适合在应用程序级别存储全局变量。所有用户/会话都会看到这些变量的相同值。所有视图都可以使用这些变量。
res.locals --用于存储特定请求/响应周期的变量。这些变量仅可用于与响应关联的视图。
req.session --用于存储与唯一用户会话相关的变量(例如用户名)。这些变量应该可供唯一用户/会话的所有视图使用。
我拥有的具体用例如下:用户运行查询,从mongodb检索数据。我现在想要这个查询的结果,它是一个JSON数组,可以作为变量提供给所有视图(HTTP请求)。“存储”结果数组的最佳方法是什么,以便每个视图都可以访问它?
发布于 2013-03-08 15:06:28
我现在想要这个查询的结果,它是一个json数组,可以作为所有视图的变量。“存储”结果数组的最佳方法是什么,以便每个视图都可以访问它?
当您说“所有视图都可用”时,我假设您指的是跨所有HTTP请求。如果是这样的话,那么您需要意识到HTTP是一个无状态协议,并且没有提供这种协议。你需要为此开发自己的机制。
这样做的一种方法是在服务器上缓存这个信息(数组),并在每个请求中检索它(例如,从内存而不是从MongoDB中检索它)。您将在cookie上存储一个会话ID,并根据这个ID在另一个请求通过时从缓存中获取它。有几种可用的缓存工具(例如redis、memcached等),您可以选择将这些信息存储在内存中。
您还可以对此信息(数组本身)进行cookie,在这种情况下,它将在每个HTTP请求上在客户端和服务器之间来回发送,除非数据非常小,否则很可能不是一个好主意。
https://stackoverflow.com/questions/15294941
复制相似问题