saveUninitialized 和 resave 有什么区别?

What's the difference between saveUninitialized and resave?

Express 的会话中间件提供several configurable options

重新保存:'Forces the session to be saved back to the session store, even if the session was never modified during the request.'

保存未初始化: 'Forces a session that is "uninitialized" to be saved to the store. A session is uninitialized when it is new but not modified.'

看来这两个选项都是为了保存未修改的会话。 有什么区别?

我想我会从一个基本的答案开始,我目前的一点理解,然后一起改进它。重要问题已经 'dead' 太久了。

来自this 我理解的区别是:

(未修改'state'与未初始化状态不同)

重新保存:对于任何请求

  • 会话中无需更改任何内容(无需登录等)。
  • 需要更改会话(已登录)

"Forces session to be saved even when unmodified"

saveUninitialized:是关于session的状态,如果它还处于未初始化状态。

  • 仅未修改,会话中的任何内容都不需要更改(无需登录等)。

"Forces a session that is "uninitialized" 保存到存储中。会话是新的但未修改时未初始化。"

基本上,一个session只有在被修改的时候才会保存在store中;如果您添加删除编辑 会话 cookie(例如:req.session.test = 'some value')。如果您希望所有会话都保存在存储中,即使它们没有任何修改,请使用 saveUninitialized: true.

现在,重新保存也仅在会话 variables/cookies 更改时发生。如果您想保存,请始终使用 resave: true