Node.JS deflate/gzip响应文本
Node.JS deflate/gzip response text
我看到了这里显示的示例
response.writeHead(200, { 'content-encoding': 'deflate' });
raw.pipe(zlib.createDeflate()).pipe(response);
我试图通过创建一个读取流并发送压缩的输出来发送响应。
但我正在寻找一种不用读流的方法,因为我的文本来自另一个HTTP
请求。我只是习惯了response.write(text);
我尝试了一些东西,包括
zlib.deflate(text, function (err, buffer) {
if (err) throw err;
response.write(buffer);
response.end();
});
但浏览器显示invalid or unsupported form of compression.
我做错了什么?
connect
的代码显示
return stream
? stream.write(new Buffer(chunk, encoding))
: write.call(res, chunk, encoding);
那么,是不是只有流才会被处理?
您在使用Express吗?如果是,只需使用compress
中间件:
app.use(express.compress());
http://expressjs.com/api.html#compress
所以,我设法解决了这个问题。这是代码
var zlib = require('zlib');
var connect = require('connect');
var fs = require('fs');
var server = connect()
// .use(connect.compress()) It didn't work either
.use(function (req, res, next) {
var text = fs.readFileSync('test.js');
zlib.deflate(text, function (err, buffer) {
if (err) throw err;
res.writeHead(200, {
'Content-Encoding': 'deflate',
'Content-Type': 'text/javascript'
});
res.end(buffer);
});
})
.listen(1337);
我不知道我之前犯了什么错误导致它不起作用。我不确定是否有版本冲突导致了问题或其他原因。但最后,上面的代码对我有效;)
相关文章:
- 无法获取SOAP请求的响应文本
- Ajax 响应文本
- Jquery函数来验证响应文本
- Ajax响应文本始终为1
- XMLHttpRequest 的响应文本在 Mozilla 中为 null(空白)
- AJAX 响应文本为空
- 返回了JS对象,但响应文本不起作用
- 遍历响应文本
- AJAX 响应文本不匹配
- 原型 AJAX 响应文本缺少 javascript
- XHR 响应文本为空字符串
- 如何获取响应文本
- 将 AJAX 响应文本加载到 DIV 中
- 以优雅的方式将响应文本解析为键值对
- 使用 ajax 显示 php 响应文本
- 在 coffeescript 中迭代 json 响应文本
- AJAX 调用响应文本为空
- 如何从响应文本获取 JSON 字符串到 JavaScript 中
- 从单独的文件返回 AJAX 响应文本
- AJAX:响应文本在本地返回我的整个PHP代码