node.js 용 Express 및 Passport를 사용하여 간단한 웹 서버를 작성하고 간단한 모듈을 코딩 한 다음 모듈을 GET 요청에로드하면 모든 것이 작동합니다 둘 이상의 사용자가 요청에 액세스 할 때까지 좋습니다.ExpressJS/Node.js에서 메모리 충돌을 피하는 방법
"app.get"함수의 "var"는 함수가 끝난 후에 메모리에서 제거되었지만 그렇지 않은 경우 외부 모듈 내부의 일부 로컬 변수를 사용한다고 생각합니다.
var some_value=0;
function some_method(){
some_value++;
return some_value;
}
exports.some_method = some_method;
을 그리고 익스프레스 요청 코드는 다음과 같습니다 : 사용자간에 공유되는 모듈은 다음과 같습니다
app.get('/someurl', function(req, res) {
var some_extermal_module = require('/some_extermal_module'); // <-----Right way?
var data = some_extermal_module.some_method();
res.render('view', {
title : 'Title',
data_to_vew: data
});
});
는 "app.get"요청 내부 객체는 관계없이 메모리에 항상 유지 다른 사용자가 액세스하고 있습니까?
"var"개체를 실행 한 후 정리하는 방법은 무엇입니까?
이 메모리 충돌을 어떻게 피할 수 있습니까?
모듈을 다르게 코딩하거나 모듈을 다르게 호출해야합니까?
고마워요.
업데이트 : 이것은 적절한 해결책이라고 생각하지만 일부 node.js/Express 전문가의 검토 또는 승인을 받아야합니다.
app.js :
var ext_mod = require('./module');
var express = require('express');
var app = express();
app.get('/', function(req, res){
var ex_mod_instance = new ext_mod({});
ex_mod_instance.func_a({},function(ret){
res.send('Hello World: '+ret);
});
ex_mod_instance = null; // clean
});
app.listen(8080);
console.log('Listening on port 8080');
module.js :
var node_module = function(config) {
this.config = config;
this.counter=0;
};
node_module.prototype = {
func_a: function(param,done) {
this.counter++;
done(this.counter);
},
func_b: function(param,done) {
}
};
module.exports = node_module;
이 메모리 (누수)을 저장하는 가장 좋은 방법이 있나요?
을 req.session.some_value에 명시 세션 미들웨어를 사용하고 변수를 추가해야 고마워, 모듈 캐싱을 잊어 버렸습니다. 올바르게 수행하는 방법에 대한 온라인 가이드/예를 알고 계십니까? –