Javascript 我是否应该在收到请求后关闭代理连接?

Javascript 我是否应该在收到请求后关闭代理连接?,javascript,node.js,sockets,http,proxy,Javascript,Node.js,Sockets,Http,Proxy,我有一个http请求/响应问题 假设我有一个代理服务器,它将客户端的请求转发给第三方服务器,第三方服务器的响应返回给客户端: var http = require('http'); var url = require('url'); http.createServer(function (req, res) { var opts = { hostname : 'www.example.com', port : 80, path : req.url,

我有一个http请求/响应问题

假设我有一个代理服务器,它将客户端的请求转发给第三方服务器,第三方服务器的响应返回给客户端:

var http = require('http');
var url = require('url');

http.createServer(function (req, res) {

  var opts = {
    hostname : 'www.example.com',
    port     : 80,
    path     : req.url,
    method   : req.method,
    headers  : req.headers
  };
  opts.headers.host = opts.host;

  var proxyReq = http.request(opts, function (proxyResponse) {
    res.writeHead(proxyResponse.statusCode, proxyResponse.headers);
    proxyResponse.pipe(res);
  });

  req.pipe(proxyReq);

}).listen(3000);
假设客户机具有缓存感知功能(如浏览器),如果自以来进行了修改,则会传递一个
,如果没有匹配的
(或其他)头,则会传递一个
,导致第三方服务器响应304状态代码

现在,从技术上讲,服务器不应该发送主体,而客户端在接收到响应主体后也不关心响应主体

在代理响应处理程序中执行此操作是否有意义(并且是否会节省任何带宽/资源),用于错误地发送带有304的响应体的服务器:

var proxyReq = http.request(opts, function (proxyResponse) {

  // Terminate the request, and respond with empty body.
  if (proxyResponse.statusCode === 304) {
    proxyResponse.connection.end();
    return res.end();
  }

  /* ... */
还是像那样终止套接字不好?我不太清楚在套接字上调用
.end()
是否会破坏http保持活动连接,或者对性能有任何影响

谢谢你的帮助

现在,从技术上讲,客户机在收到响应后并不关心响应主体

304响应不应包含响应主体。如果这样做,将违反协议,您应该关闭连接。RFC2616:

304响应不能包含消息体,因此总是由头字段后的第一个空行终止