在Node.js中管理会话变量的最佳方法是什么?有没有图书馆?
答案 0 :(得分:95)
您可以使用以下方法轻松完成:
连接:http://senchalabs.github.com/connect/
Connects就像Ruby中的Rack。它为您提供了一个额外的层,您可以在其中“玩”身份验证,会话,cookie等。
其他选择是使用框架:
Express.js:http://expressjs.com/
它似乎是最常用的node.js框架。就像Sinatra for Ruby并且运行在连接之上。
Geddy:http://geddyjs.org/
如果您想要做更复杂的WebApp,Geddy就是您选择的。就像Rails for Ruby。
答案 1 :(得分:13)
nodejs提供了一个基本的http API。 http是无状态的,会话和会话变量的思想存在于构建于http之上的框架/协议中。 http://en.wikipedia.org/wiki/Session_%28computer_science%29
请查看http://geddyjs.org/或http://expressjs.com/作为使用提供会话的节点构建的Web框架的示例。
答案 2 :(得分:12)
将其卸载到memcache或其他一些缓存机制。我不会用这种东西给你的服务器增加负担。超级精益网络服务器必须记住内容的重点是什么。
我还会尝试开发您的网站作为应用程序而不是网站,或将您的网站视为应用程序,使用html5的精彩功能,如本地存储/本地数据库,并减少服务器之间的流量和客户端机器。
如果所有其他方法都失败了(或者网站很小)那么什么阻止你编写自己的会话类。没那么难。特别是如果它是一个内存类型的东西。放一些计时器逻辑来超时会话,然后你去。该死的动态语言如JavaScript,应该是一个很好的。
结构应该是一个字典,其中键是会话,而值是包含上次通信和功能详细信息的对象(以启用对某些功能的访问)。添加扫描功能以清除已超时的旧会话。和宾果游戏。基本会话服务。基本检查“列表中的会话密钥...是/否...获取详细信息”......我认为这就是......或者是否有一些我缺少的功能。
我个人会尽可能避免使用任何第三方工具。时间之沙非常快,您可以随时依赖自己开发的代码。
答案 3 :(得分:6)
唐纳德的答案很好 - 一旦你进入连接中间件的洋葱模式,你必须决定使用什么类型的会话存储。 express中的默认值是MemoryStore,不适合生产使用。以下是您的一些选择:
Mongo https://github.com/mikkel/express-session-mongo - 请务必使用“native_parser:false”选项
Redis https://github.com/visionmedia/connect-redis - 非常好,但如果你还没有将redis用于pub / sub或存储,那可能不太理想。
注意,还有其他选择 - 这取决于您的项目。寻找可以利用现有技术堆栈引入的内容。
答案 4 :(得分:2)
如果您正在寻找使用Node.js进行认真的Web开发,请使用Express framework;它支持会话。
使用--sessions选项创建Express项目。
$ express --sessions
安装Express:
$ npm install express -g