我遇到Express.js的性能瓶颈。 方案如下。客户端是Backbone / Marionette / RequireJS完整SPA.Server是用sails.js编写的。 Sails仅用作REST服务器(不提供任何HTML)这两个应用程序都在AWS - Windows实例上的一台计算机上提供。 WIndows服务器2012 32x。
Sails作为单独的节点进程提供。客户端作为另一个单独的流程。服务器响应时间是即时的,而客户端是可怕的。 * .js文件会不断地一次又一次地下载。这是我仅用于为客户提供服务的脚本。
"use strict";
process.env.NODE_ENV = "production";
var allowCrossDomain = function (req, res, next) {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
res.header('Access-Control-Allow-Headers', 'content-type, Authorization, Content-Length, X-Requested-With, Origin, Accept');
if ('OPTIONS' === req.method) {
res.send(200);
} else {
next();
}
};
var path = require("path"),
express = require("express"),
app = express();
app.configure('production', function () {
var oneYear = 31557600000; //31557600000
app.set('port', process.env.PORT || 80);
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(allowCrossDomain);
app.use(app.router);
//Serve the root
app.use(express.static(__dirname + './../', { maxAge: oneYear } ));
console.log("Started!");
});
app.listen(80)
这个简约的Express服务器有什么问题吗? 此脚本位于项目根目录中的文件夹中。
如果我使用Apache提供这些脚本,我会得到更好的结果吗? IIS?使用其他任何节点,有点失败我猜的目的......但我愿意做任何事情来最终解决这个问题。如果使用IIS为我的客户端提供服务是完全有效的,那就这样吧。我只需要指示。
在Ubuntu实例(我无法使用)上启动时的同一项目要快得多,他们使用Apache来服务Backbone Client。响应时间很长。他们和我们的实例是在Micro实例上提供的。
当我放大实例(Windows),说像M1.Medium之类的东西时,一切都会好得多,也就更快。当然,我们将为项目使用付费实例...... Ubuntu实例的运行速度比Windows版快得多,这简直令人难以置信。也许这是正常的,因为Windows Server有更大的内存和CPU占用空间?我只是不知道。
对此有何想法?