使用的NodeJS中的zlib gzip的发送数据(Nodejs send data in gzip

2019-07-19 15:46发布

我试图发送文本采用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);

Answer 1:

你走了一半。 我衷心地同意该文件资料是不太及格就如何做到这一点;

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);
});


文章来源: Nodejs send data in gzip using zlib
标签: node.js gzip