【问题标题】:Nodejs Connect/Express how session manage memoryNodejs Connect/Express 会话如何管理内存
【发布时间】:2012-09-09 07:32:58
【问题描述】:

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

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

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

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

【问题讨论】:

  • 我希望它不会这样做。我希望。

标签: node.js session cookies express connect


【解决方案1】:

Connect MemoryStoreSession 中间件的默认会话存储模块)不会对过期会话进行垃圾收集。它只在它们被访问时检查它们的过期时间(如果会话过期,它会删除存储),所以如果用户清除他们的cookies,会话将永远不会被再次访问,并且永远不会从MemoryStore 过期。因此,the warning at the Session middleware docs 不应在生产中使用 MemoryStore

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

【讨论】:

  • 好的,谢谢。我想一种方法是运行一个 setTimeout 计时器来扫描会话对象并清理它?
  • 最好实现您自己的从Store 继承的模块,并以一种可以让您轻松找到陈旧会话的方式实现存储。
猜你喜欢
  • 2014-04-11
  • 2015-05-18
  • 2013-06-20
  • 2016-12-07
  • 1970-01-01
  • 2012-03-06
  • 1970-01-01
  • 2018-06-30
  • 2015-06-09
相关资源
最近更新 更多