express-session 如何管理其会话存储?
How express-session manages its session storage?
假设我的 node.js
+express
+socket.io
服务器和 express-session
中间件正在使用 mongoDB
作为存储 ('connect-mongo'
)会话的 maxAge
设置为 null
(即只要用户的浏览器打开,cookie 就会持续),现在该服务器已完全关闭。
时代在流逝,进入新的世纪,Earth
被Zombies
、Werewolfs
、Alien Invaders
撕裂,一群勇敢的科学家发现我的服务器的完整残余并启动它们。
因此,此时许多(如果不是全部)客户端的浏览器已关闭并清除了 cookie。如果其中一个客户端连接到我的服务器,服务器会发现他(客户端)没有提供任何有效的 cookie,并会为他创建一个新的 cookie。
现在 - 我感兴趣的部分 - 存储在 connect-mongo
存储中的那些旧 sessions
发生了什么。显然服务器在他宕机时无法清理它们,现在它们将作为数据库存储中的死货挂起?或者它背后有一些令人兴奋的魔法,在服务器重新启动后,这些用户会以某种方式 'know' 很久以前就结束了他们的会话,而服务器已关闭并会相应地清理所有内容?
express-session
不会对其商店强制执行任何清理行为(至少我没有在 source code). However, stores may certainly clean up stale sessions. For example, from the connect-mongo
documentation:
中看到任何证据
By default, connect-mongo
uses MongoDB's TTL collection feature (2.2+) to have mongod automatically remove expired sessions. But you can change this behavior.
假设我的 node.js
+express
+socket.io
服务器和 express-session
中间件正在使用 mongoDB
作为存储 ('connect-mongo'
)会话的 maxAge
设置为 null
(即只要用户的浏览器打开,cookie 就会持续),现在该服务器已完全关闭。
时代在流逝,进入新的世纪,Earth
被Zombies
、Werewolfs
、Alien Invaders
撕裂,一群勇敢的科学家发现我的服务器的完整残余并启动它们。
因此,此时许多(如果不是全部)客户端的浏览器已关闭并清除了 cookie。如果其中一个客户端连接到我的服务器,服务器会发现他(客户端)没有提供任何有效的 cookie,并会为他创建一个新的 cookie。
现在 - 我感兴趣的部分 - 存储在 connect-mongo
存储中的那些旧 sessions
发生了什么。显然服务器在他宕机时无法清理它们,现在它们将作为数据库存储中的死货挂起?或者它背后有一些令人兴奋的魔法,在服务器重新启动后,这些用户会以某种方式 'know' 很久以前就结束了他们的会话,而服务器已关闭并会相应地清理所有内容?
express-session
不会对其商店强制执行任何清理行为(至少我没有在 source code). However, stores may certainly clean up stale sessions. For example, from the connect-mongo
documentation:
By default,
connect-mongo
uses MongoDB's TTL collection feature (2.2+) to have mongod automatically remove expired sessions. But you can change this behavior.