Gin*_*xxx 13 javascript cookies session memory-leaks node.js
这里的好日子是我的代码:
var express = require('express');
var session = require('express-session');
var app = express();
app.set('trust proxy', 1);
app.use(session({
secret: 'secret',
saveUninitialized: true,
resave: false,
maxAge: 1000 * 60 * 15,
cookie:{
secure: true
}
}));
Run Code Online (Sandbox Code Playgroud)
这段代码总是在我的日志中返回a:
警告:connect.session()MemoryStore不是为生产环境设计的,因为它会泄漏内存,并且不会扩展到单个进程.
我试着用谷歌搜索它,但我似乎不理解一些教程.对不起,我的英语不好.
使用cookie-session
而不是express-session
为我解决了这个问题。
您将会话存储在客户端上,而不是使用 cookie 存储在服务器上。
简单地:
npm install cookie-session
var session = require('express-session');
到
var session = require('cookie-session');
我希望这对与我一样困扰同样问题的人有所帮助。自己挖。
//-momery unleaked---------
app.set('trust proxy', 1);
app.use(session({
cookie:{
secure: true,
maxAge:60000
},
store: new RedisStore(),
secret: 'secret',
saveUninitialized: true,
resave: false
}));
app.use(function(req,res,next){
if(!req.session){
return next(new Error('Oh no')) //handle error
}
next() //otherwise continue
});
Run Code Online (Sandbox Code Playgroud)
小智 5
这都是关于存储会话的,您应该添加一个将会话存储到数据库中的存储系统。这有助于您的应用程序管理会话。
例如,在 mongodb 中您可以使用 connect-mongo,您应该找到一个存储包并用于其他数据库。
https://www.npmjs.com/package/connect-mongo
const session = require('express-session');
const MongoStore = require('connect-mongo')(session);
app.use(session({
secret: 'foo',
store: new MongoStore(options)
}));
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8018 次 |
最近记录: |