HTTP – 如何发送多个预caching的gzip块?

可以说我有2个单独的gziped html块在内存中。 我可以发送chunk1 + chunk2到HTTP客户端吗? 任何浏览器是否支持这个? 或者没有办法做到这一点,我不得不gzip整个stream不个别块?

我想服务于客户端为例如chunk1 + chunk2和chunk2 + chunk1等(不同的顺序),但我不想压缩整个页面,我不想caching整个页面。 我想使用预压缩的caching块并发送它们。

nodejs代码(节点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 ,那么他们应该接受级联的gzipstream,并将它们解压缩,就像数据全部压缩成一个stream一样。 RFC 2616中的HTTP 1.1标准实际上是指RFC 1952。

如果用“chunks”表示分块传输编码,则与压缩无关。 如果客户端接受连接的stream,那么没有理由使分块传输编码的边界必须与内部的gzipstreamalignment。

至于如何做到这一点,简单地gzip你的作品,并直接连接它们。 没有其他格式或准备是必需的。

也有兴趣的东西..任何人都知道如何预caching,然后concat gzipped缓冲区? Chrome浏览器首次成功完成大块显示崩溃testing…