【问题标题】:Storing sessions in express for a business app what should i use?为业务应用程序快速存储会话我应该使用什么?
【发布时间】:2016-01-07 09:01:04
【问题描述】:

我想为同一个帐户的多个登录创建会话现在我正在为任何特定用户存储唯一的会话字符串现在我的问题是,当我使用 express-session 时,然后在其文档页面 enter link description here 上提到了

警告:默认的服务器端会话存储 MemoryStore 故意不是为生产环境设计的。它在大多数情况下会泄漏内存,不会扩展到单个进程,并且用于调试和开发

现在我的问题是,当我为企业创建应用程序时,我应该使用它还是不使用它,如果我不使用,那么存储会话的最佳方法是什么?我听说过 redis,但我也听说它消耗大量内存这就是为什么任何人都可以在这个问题上加一点点,我会非常感激的。

【问题讨论】:

标签: node.js session express redis


【解决方案1】:

常见的三个更有用的选项,而不是MemoryStore

CookieSession

connect-redis

connect-mongo

来自here

我建议你使用CookieSession,因为它更简单快捷。来自docs的简单示例:

var cookieSession = require('cookie-session')
var express = require('express')

var app = express()

app.set('trust proxy', 1) // trust first proxy

app.use(cookieSession({
  name: 'session',
  keys: ['key1', 'key2']
}))

到期时间:

maxAge:一个数字,表示从 Date.now() 到到期的毫秒数

expires:一个 Date 对象,表示 cookie 的过期日期 (默认在会话结束时到期)。

您可以在属于当前用户的单个 cookie 上设置 expires 或 maxAge:

// This user should log in again after restarting the browser
req.session.cookie.expires = false;

// This user won't have to log in for a year
req.session.cookie.maxAge = 365 * 24 * 60 * 60 * 1000;

【讨论】:

  • 对于在我的应用上注册了 100000 名用户的商业应用会有好处吗??
  • 我也不想指定会话时间,因为我不知道用户将登录我的应用程序需要多长时间
  • 如果你怀疑 session 是否支持许多用户和访问,答案是肯定的,但问题更多与服务器结构、编程语言有关(node.js 是一个很好的选择,原因有很多( asyncrous 是其中之一))、Web 服务器(我建议使用 nginx)和数据库(在许多寄存器的情况下,nosql 是一个很好的选择)
  • maxAge中指定较高的时间
  • 另外,因为我使用的是应用程序而不是网站,所以我没有使用任何 cookie,我将令牌存储在变量中并将它们作为后参数传递现在这里是否使用了 cookie??跨度>
猜你喜欢
  • 2014-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-27
  • 2016-04-30
  • 2016-12-26
  • 2011-08-03
  • 2016-07-06
相关资源
最近更新 更多