服务器端路由上的 Meteor iron-router - 为什么这么慢?
Meteor iron-router on server-side route - why so slow?
11,222 requests/sec 原始节点...
var http = require('http');
http.createServer(function(req, res) {
res.end('done');
}).listen(1337, '127.0.0.1');
=
gobench -c 100 -t 5 -u http://localhost:1337
Requests: 56112 hits
Successful requests: 56112 hits
Network failed: 0 hits
Bad requests failed (!2xx): 0 hits
Successfull requests rate: 11222 hits/sec
Read throughput: 1369156 bytes/sec
Write throughput: 1349088 bytes/sec
Test time: 5 sec
但是在 Meteor 中使用 Iron-Router 服务器端路由返回同样的东西...
Router.route('/test', function() {
this.response.end('done');
}, {
where: 'server'
});
=
gobench -c 100 -t 5 -u http://localhost:3000/test
Requests: 6544 hits
Successful requests: 6544 hits
Network failed: 0 hits
Bad requests failed (!2xx): 0 hits
Successfull requests rate: 1308 hits/sec
Read throughput: 189776 bytes/sec
Write throughput: 164771 bytes/sec
Test time: 5 sec
瓶颈是 Meteor 还是 Iron-Router?
瓶颈是几件事的结合。
当您使用原始 http
服务器时,您会错过 Meteor 和 Iron Router(bodyparser 和路由匹配)和路由匹配工具包(meteor 端)使用的中间件。还要记住 Iron Router 使用正则表达式来匹配路由。
另一个是 meteor run
模式(不是 meteor build
的捆绑应用)在应用本身之上有一个额外的代理服务器。
还有一些其他中间件可以检查从何处路由文件(即它是否是静态资产)(包括针对哪种架构(cordova 或客户端)。
此外,index.html
文件必须在 Meteor 中的每个运行时生成。
Meteor 使用的中间件的提示来自 webapp
包:https://github.com/meteor/meteor/blob/devel/packages/webapp/webapp_server.js
11,222 requests/sec 原始节点...
var http = require('http');
http.createServer(function(req, res) {
res.end('done');
}).listen(1337, '127.0.0.1');
=
gobench -c 100 -t 5 -u http://localhost:1337
Requests: 56112 hits
Successful requests: 56112 hits
Network failed: 0 hits
Bad requests failed (!2xx): 0 hits
Successfull requests rate: 11222 hits/sec
Read throughput: 1369156 bytes/sec
Write throughput: 1349088 bytes/sec
Test time: 5 sec
但是在 Meteor 中使用 Iron-Router 服务器端路由返回同样的东西...
Router.route('/test', function() {
this.response.end('done');
}, {
where: 'server'
});
=
gobench -c 100 -t 5 -u http://localhost:3000/test
Requests: 6544 hits
Successful requests: 6544 hits
Network failed: 0 hits
Bad requests failed (!2xx): 0 hits
Successfull requests rate: 1308 hits/sec
Read throughput: 189776 bytes/sec
Write throughput: 164771 bytes/sec
Test time: 5 sec
瓶颈是 Meteor 还是 Iron-Router?
瓶颈是几件事的结合。
当您使用原始 http
服务器时,您会错过 Meteor 和 Iron Router(bodyparser 和路由匹配)和路由匹配工具包(meteor 端)使用的中间件。还要记住 Iron Router 使用正则表达式来匹配路由。
另一个是 meteor run
模式(不是 meteor build
的捆绑应用)在应用本身之上有一个额外的代理服务器。
还有一些其他中间件可以检查从何处路由文件(即它是否是静态资产)(包括针对哪种架构(cordova 或客户端)。
此外,index.html
文件必须在 Meteor 中的每个运行时生成。
Meteor 使用的中间件的提示来自 webapp
包:https://github.com/meteor/meteor/blob/devel/packages/webapp/webapp_server.js