node.js - Nodejs Connect/Express session 如何管理内存

标签 node.js session cookies express connect

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

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

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

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

最佳答案

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

Connect 不提供其他 session 存储模块,并希望您提供自己的,建立在 Session 中间件中包含的抽象 Store 模块的基础上。

关于node.js - Nodejs Connect/Express session 如何管理内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12453249/

相关文章:

javascript - 如何使用 request-promise-native 获得自然解决的 promise

php - 如何使用 PHP 正确添加跨站请求伪造 (CSRF) token

android - 保存 Cookies Webview?

http - 使用 ip 地址代替 cookie 的域名

cookies - 在 swagger 文档请求中包含 cookie

javascript - 将文件上传到node.js中的ftp服务器

javascript - "Emit"和 "On"套接字 IO,Node.js

javascript - .js 日期字符串 YYYY-MM-DD-HH-MM

java - 如何欺骗 session cookie 来测试 session 复制

java - 如何从应用程序的任何部分访问 HashMap 或 ArrayList?