Node.js 什么';“这正是”的意思;saveUninitialized"&引用;“重新保存”;及;滚动;快速会话中的属性?

Node.js 什么';“这正是”的意思;saveUninitialized"&引用;“重新保存”;及;滚动;快速会话中的属性?,node.js,express,Node.js,Express,最近,我正在学习express的中间件“express session”,我想了解给定选项中的所有属性。但是当我阅读有关express session的API时,我对这三个属性感到困惑 属性:saveUninitialized、resave和rolling 它们都对cookie设置或会话操作有影响,那么它们的区别和联系是什么呢 希望有人能帮我区分一下 非常感谢 当现代浏览器发出请求时,它会在Cookie标题中附加与当前域(网站)匹配的所有Cookie。以下是我访问stackoverflow.co

最近,我正在学习express的中间件“express session”,我想了解给定选项中的所有属性。但是当我阅读有关
express session
的API时,我对这三个属性感到困惑

属性:
saveUninitialized
resave
rolling

它们都对cookie设置或会话操作有影响,那么它们的区别和联系是什么呢

希望有人能帮我区分一下


非常感谢

当现代浏览器发出请求时,它会在
Cookie
标题中附加与当前域(网站)匹配的所有Cookie。以下是我访问stackoverflow.com时浏览器可能发送的内容示例:

Cookie:acct=1234

首次访问站点时,浏览器不会发送cookie。在这种情况下(例如,如果所有者希望使用Cookie跟踪用户会话),服务器通常会使用
Set Cookie
头进行响应,如下所示:

设置Cookie:acct=5678;expires=2050年5月15日星期六15:32:57 GMT;域=.stackoverflow.com

(它还可以附加
路径
安全
HttpOnly
选项,所有说明都已说明)我正在简化,但默认情况下,
快速会话
仅在您第一次访问站点时发送
设置Cookie

如果
rolling
true
,则每次都会发送。这会产生预期的副作用,即在每次页面刷新时不断向前滚动cookie的过期时间。通过将
maxAge
添加到当前服务器时间来确定新的过期日期

如果更改
req.session
对象,它将在请求结束时保存回会话存储;否则它将不会被保存。将
resave
设置为
true
将强制每次保存该文件,即使未进行任何更改。这看起来似乎不合逻辑,但某些商店可能需要这样做(尽管在查看列表后,目前似乎没有一家商店需要这样做)

首次设置cookie时,将在内存中创建一个新的会话对象,并在请求结束时将其保存到存储中。如果有许多人访问数据库,然后在没有执行任何有意义的操作(如登录)的情况下跳转,那么这可能会占用数据库中的大量空间。通过将
saveUninitialized
设置为
false
,您可以选择仅在会话偏离默认会话对象时保存会话(即,如果您对其进行了修改,如在登录时设置
req.session.user=user;

需要注意的是,这些值(以及其他值)的某些组合可能会产生意外行为。例如,文件说明:

如果此选项[rolling]设置为true,但saveUninitialized选项设置为false,则不会在具有未初始化会话的响应上设置cookie


你应该接受这个答案,它真的很好。我们能谈谈吗,我没有什么疑问?