NodeJS内存泄漏
NodeJS Memory Leak
这个路由导致我的服务器慢慢耗尽内存,我不知道为什么。荒谬的exec()表达式和解析是必要的,因为目标URL的SSL版本很古老,我无法获得任何可以信任或忽略的节点SSL库。欢迎对改进此代码提出任何其他建议。
(function() {
var exec, express, fs, https, jsdom, qs, router, util;
express = require("express");
jsdom = require('jsdom');
exec = require('exec');
https = require('https');
qs = require('querystring');
fs = require('fs');
util = require('util');
router = express.Router();
router.get("/getVars", function(req, res) {
res.set({
"Cache-Control": 'max-age=86400'
});
return exec("curl -m 6 -1 'https://some.url.com'", function(err, b, stderr) {
if (b) {
return jsdom.env(b, ["http://code.jquery.com/jquery.js"], function(err, window) {
var eventvalidation, viewstate;
viewstate = window.$("#__VIEWSTATE").val();
eventvalidation = window.$("#__EVENTVALIDATION").val();
return res.json({
viewstate: viewstate,
eventvalidation: eventvalidation
});
});
} else {
return res.json({
viewstate: "verylongstring",
eventvalidation: "verylongstring"
});
}
});
});
...
我建议取消jsdom,因为它是一个非常繁重的组件,可以满足您的有限需求,使用几个正则表达式可能会更好,请参阅下文。
...
return res.json(getDataFromString(b || ''));
...
function getDataFromString(input){
return {
viewstate: (/id='"__VIEWSTATE'" value='"([^'"]*)'"/).exec(input)[1] || "verylongstring",
eventvalidation: (/id='"__EVENTVALIDATION'" value='"([^'"]*)'"/).exec(input)[1] || "verylongstring"
}
}
相关文章:
- 重复应用 d3 转换导致的内存泄漏
- IE7中的blockUI插件内存泄漏25kb
- Javascript闭包-如何防止内存泄漏
- jQuery Draggable:内存泄漏
- "检测到可能的EventEmitter内存泄漏”;使用Gulp+Watchify+Factor捆绑包
- 在Dojo类中递归调用setTimeout时是否存在内存泄漏
- 是内存泄漏
- 将处理程序留在img.onload上是内存泄漏
- 具有并发sse连接的node.js内存泄漏
- 简单对象的Javascript内存泄漏
- WeakMap是否会将我从父/子关系的内存泄漏中拯救出来
- Javascript绘制画布内存泄漏
- 为什么我的svg节点在IE中泄漏内存
- AngularJS指令包装器与Kendo一起泄漏内存
- 经过几次清理尝试后,主干仍在泄漏内存
- 这个js代码如何泄漏内存
- 未处理的postMessage是否泄漏内存
- 动态创建和销毁三.js场景,而不会泄漏内存
- 我的PyV8上下文泄漏内存
- 为什么我的数字时钟功能泄漏内存