1

データを提供せずにリクエストを受信したらすぐに response.end() を呼び出したり、response.write() を呼び出したり、response.writeHead() を呼び出したりすると、NodeJS ではどうなりますか? 私は2つの角度からの答えに興味があります:

1) サーバー アングル - これは基本的に、nodeJS 内のバックエンド スタックまたはヒープから何かを取り出して、一部のリソースを解放しますか? または、まったく異なることが起こりますか?

2) クライアントの観点 - これが応答でデータを受信することを期待していない ajax 要求からのものである場合、問題が発生する可能性はありますか?

4

2 に答える 2

6

ここで行うべき明らかなことは、それを試すことです。Node.jsコード:

var http = require('http');
http.createServer(function (req, res) {
  res.end();
}).listen(1337, '127.0.0.1');

サーバーの観点からは、そこにデータ/カスタムヘッダーを追加することと同じです。

クライアントの観点から、ヘッダー付きの空の応答本文を取得します。

Connection:keep-alive
Date:Sun, 29 Jul 2012 07:58:51 GMT
Transfer-Encoding:chunked

hello worldの例との違いは、Content-Typeヘッダーがなく、応答の本文が空であるということです。

于 2012-07-29T08:02:04.597 に答える
2

1)要求と応答に関連するすべてのリソースが放棄されます(ガベージコレクションに使用できるようになります)

2)ノードはデフォルトのヘッダーと空の本文で応答を送信します。それをどのように扱うかは、純粋にクライアント次第です。ほとんどの場合、クライアントはデフォルトヘッダーを不完全と見なしますが、応答本文がない場合、代替手段はありません。

于 2012-07-29T08:01:46.577 に答える