让我们假设我的node.js
+ express
+ socket.io
服务器与express-session
中间件使用mongoDB
作为存储('connect-mongo'
){会话的{1}}设置为maxAge
(即,只要用户的浏览器打开,cookie就会持续),现在这个服务器完全关闭了。
年龄越过新世纪,null
被Earth
,Zombies
和Werewolfs
撕裂,一群疯狂勇敢的科学家发现完整的残余我的服务器并启动它们。
因此,此时许多(如果不是每个)客户端的浏览器都被关闭并且cookie被清除。如果其中一个客户端将连接到我的服务器,服务器将发现他(客户端)没有提供任何有效的cookie并将为他创建一个新的。
现在 - 我感兴趣的部分 - 存储在Alien Invaders
存储中的旧sessions
发生了什么。显然服务器在他关闭时无法清理它们,现在它们只是作为数据存储中的死货而挂起?或者它背后有一些令人费解的魔力,在服务器重启之后,会以某种方式“知道”这些用户很久以前就已经结束了他们的会话,而服务器已关闭并且会相应地清理所有内容吗?
答案 0 :(得分:1)
express-session
并没有对其商店强制执行任何清理行为(至少我在source code中没有看到任何证据)。但是,商店当然可以清理陈旧的会话。例如,来自connect-mongo
documentation:
默认情况下,
connect-mongo
使用MongoDB的TTL收集功能(2.2+)让mongod自动删除过期的会话。但是你可以改变这种行为。