20

テキストをgzipで送信しようとしましたが、方法がわかりません。では、コードはfsを使用していますが、テキストファイルではなく、文字列のみを送信します。

const zlib = require('zlib');
const http = require('http');

http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/html', 'Content-Encoding': 'gzip'});

    const text = "Hello World!";
    res.end(text);

}).listen(80);
4

1 に答える 1

43

途中です。私は、ドキュメンテーションがこれを行う方法を完全に理解しているわけではないことに心から同意することができます。

const zlib = require('zlib');
const http = require('http');

http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/html', 'Content-Encoding': 'gzip'});

    const text = "Hello World!";
    const buf = new Buffer(text, 'utf-8');   // Choose encoding for the string.
    zlib.gzip(buf, function (_, result) {  // The callback will give you the 
        res.end(result);                     // result, so just send it.
    });
}).listen(80);

Buffer単純化すると、 ;を使用しないことになります。

http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/html', 'Content-Encoding': 'gzip'});

    const text = "Hello World!";
    zlib.gzip(text, function (_, result) {  // The callback will give you the 
      res.end(result);                     // result, so just send it.
    });
}).listen(80);

...デフォルトでUTF-8を送信しているようです。ただし、他の人よりも意味のあるデフォルトの動作がなく、ドキュメントですぐに確認できない場合は、個人的に安全な側を歩くことを好みます。

同様に、代わりにJSONオブジェクトを渡す必要がある場合:

const data = {'hello':'swateek!'}

res.writeHead(200, {'Content-Type': 'application/json', 'Content-Encoding': 'gzip'});
const buf = new Buffer(JSON.stringify(data), 'utf-8');
zlib.gzip(buf, function (_, result) {
    res.end(result);
});
于 2013-02-08T18:00:35.367 に答える