Nodejs连接/表达会话管理内存的方式

时间:2012-09-17 04:46:28

标签: node.js session cookies express connect

我一直在阅读关于如何管理会话的Connect和Express的源代码。我仍在学习会话的基础知识,但我不明白如何处理内存。

我知道服务器将会话数据保存在内存中,并使用会话ID来访问数据。服务器发送持有id的cookie(我猜测会话cookie?),当用户访问该站点时,会话再次被使用。

这是一个愚蠢的问题,但我的问题是内存是如何管理的,如果用户删除他的cookie或过期而不更新会话超时?数据是否永远留在内存中?

编辑:我刚看了PHP和其他语言,并看到了如何清理会话的文档。它们似乎有垃圾收集器(扫描并删除过期的会话)。 Connect / Express是否具有此功能?

1 个答案:

答案 0 :(得分:3)

Connect MemoryStoreSession中间件的默认会话存储模块)将垃圾收集过期会话。它仅在访问时检查其到期时间(此时删除存储,如果会话已过期),因此如果用户清除其Cookie,会话将永远不会再次访问,永远不会从MemoryStore到期。因此the warning at the Session middleware docs MemoryStore不应在生产中使用。

Connect不提供其他会话存储模块,并且希望您提供自己的会话存储模块,构建在Store中间件附带的抽象Session模块上。