nodejs response speed and nginx

后端 未结 2 785
难免孤独
难免孤独 2021-01-04 22:27

Just started testing nodejs, and wanted to get some help in understanding following behavior:

Example #1:

var http = require(\'http\');
http.create         


        
2条回答
  •  情书的邮戳
    2021-01-04 23:05

    Peeking into http.js reveals that case #1 has special handling in nodejs itself, some kind of a shortcut optimization I guess.

    var hot = this._headerSent === false &&
                typeof(data) === 'string' &&
                data.length > 0 &&
                this.output.length === 0 &&
                this.connection &&
                this.connection.writable &&
                this.connection._httpMessage === this;
    
          if (hot) {
            // Hot path. They're doing
            //   res.writeHead();
            //   res.end(blah);
            // HACKY.
    
            if (this.chunkedEncoding) {
              var l = Buffer.byteLength(data, encoding).toString(16);
              ret = this.connection.write(this._header + l + CRLF +
                                          data + '\r\n0\r\n' +
                                          this._trailer + '\r\n', encoding);
            } else {
              ret = this.connection.write(this._header + data, encoding);
            }
            this._headerSent = true;
    
          } else if (data) {
            // Normal body write.
            ret = this.write(data, encoding);
          }
    
          if (!hot) {
            if (this.chunkedEncoding) {
              ret = this._send('0\r\n' + this._trailer + '\r\n'); // Last chunk.
            } else {
              // Force a flush, HACK.
              ret = this._send('');
            }
          }
    
          this.finished = true;
    

提交回复
热议问题