saveUninitialized和resave有什么区别?

Express会话中间件提供了几个可configuration的选项 。

resave :'强制会话保存回会话存储区,即使会话在请求期间从未被修改。

saveUninitialized :'强制将未初始化的会话保存到商店。 当一个会话是新的,但没有被修改时,会话是未初始化的。

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

我想我会从一个基本的答案开始,到目前为止我的一点理解,并一起改进。 重要的问题已经“死”了太久。

从这我明白不同的是:

(未修改的“状态”与未初始化的状态不同)

resave :对于任何请求

  • 会话中没有什么需要改变(没有login等)。
  • 需要更改会话(login)

“即使未经修改也会保存会话”

saveUninitialized :关于会话状态,如果它仍处于未初始化状态。

  • 没有修改,会话中没有什么需要改变(没有login等)。

“强制一个未初始化的会话被保存到商店,当一个会话是新的但未被修改的时候,这个会话是未初始化的。

基本上,会话只有在修改时才会保存在商店中; 如果您添加删除编辑会话cookie(例如: req.session.test = 'some value' )。 如果要将所有会话保存在存储区中,即使没有任何修改,请使用saveUninitialized: true

现在,只有当会话variables/ cookies改变时,重新保存也会发生。 如果你想保存,那么总是使用resave: true