gpt4 book ai didi

node.js - HTTP - 如何发送多个预缓存的压缩 block ?

转载 作者:搜寻专家 更新时间:2023-10-31 23:13:52 24 4
gpt4 key购买 nike

假设我在内存中有 2 个单独 gzip 的 html block 。我可以将 chunk1+chunk2 发送到 HTTP 客户端吗?有没有浏览器支持这个?或者没有办法做到这一点,我必须 gzip 整个流而不是单个 block ?

我想为客户端提供服务,例如 chunk1+chunk2 和 chunk2+chunk1 等(不同的顺序),但我不想每次都压缩整个页面,也不想缓存整个页面。我想使用预压缩的缓存 block 并发送它们。

nodejs 代码( Node v0.10.7):

// creating pre cached data buffers
var zlib = require('zlib');
var chunk1, chunk2;
zlib.gzip(new Buffer('test1'), function(err, data){
chunk1 = data;
});
zlib.gzip(new Buffer('test2'), function(err, data){
chunk2 = data;
});


var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain', 'Content-Encoding': 'gzip'});
// writing two pre gziped buffers
res.write(chunk1); // if I send only this one everything is OK
res.write(chunk2); // if I send two chunks Chrome trying to download file
res.end();
}).listen(8080);

当我的示例服务器返回这种响应时,Chrome 浏览器显示下载窗口(它不理解它:/

最佳答案

我没试过,但如果 http 客户端符合 RFC 1952 ,那么它们应该接受连接的 gzip 流,并解压缩它们,结果与数据全部压缩到一个流中的结果相同。 RFC 2616 中的 HTTP 1.1 标准实际上是指 RFC 1952。

如果“ block ”指的是分块传输编码,那么它与压缩无关。如果客户端确实接受串联流,则分块传输编码边界没有理由必须与内部的 gzip 流对齐。

至于如何做到这一点,只需将您的片段 gzip 并直接连接它们。无需其他格式化或准备工作。

关于node.js - HTTP - 如何发送多个预缓存的压缩 block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16740034/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com