Mar*_*ark 2 benchmarking proxy http stream node.js
以下哪个node.js HTTP代理实现更具性能?
第一个实现是:
var http = require('http');
http.createServer(function(request, response) {
var proxy = http.createClient(80, "google.com")
var proxy_request = proxy.request(request.method, request.url, request.headers);
proxy_request.addListener('response', function (proxy_response) {
proxy_response.addListener('data', function(chunk) {
response.write(chunk, 'binary');
});
proxy_response.addListener('end', function() {
response.end();
});
response.writeHead(proxy_response.statusCode, proxy_response.headers);
});
request.addListener('data', function(chunk) {
proxy_request.write(chunk, 'binary');
});
request.addListener('end', function() {
proxy_request.end();
});
}).listen(8080);
Run Code Online (Sandbox Code Playgroud)
第二个使用stream.pipe(),它就像:
var http = require('http');
http.createServer(function(request, response) {
var proxy = http.createClient(80, "google.com");
var proxy_request = proxy.request(request.method, request.url, request.headers);
proxy_request.on('response', function (proxy_response) {
proxy_response.pipe(response);
response.writeHead(proxy_response.statusCode, proxy_response.headers);
});
request.pipe(proxy_request);
}).listen(8080);
Run Code Online (Sandbox Code Playgroud)
如果文件很大且客户端连接速度很慢,或者上传的文件太大而服务器上传带宽很小,则第一个可能会炸毁您的进程.使用pipe
,它是专为这种东西设计的.
另外,使用npm中的现有模块:
归档时间: |
|
查看次数: |
2930 次 |
最近记录: |