3

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

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

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

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

4

1 回答 1

4

Connect MemoryStoreSession中间件的默认会话存储模块)不会垃圾收集过期会话。它仅在访问时检查它们的过期时间(此时如果会话过期,它将MemoryStore删除存储),因此如果用户清除他们的 cookie,则会话将永远不会被再次访问,并且永远不会从. 因此,中间件文档的警告SessionMemoryStore不应在生产中使用。

Connect 不提供其他会话存储模块,并希望您提供自己的,基于中间件Store包含的抽象模块构建。Session

于 2012-09-17T10:40:23.620 回答