メモリ内に 2 つの個別に gzip された html チャンクがあるとします。チャンク 1 とチャンク 2 を HTTP クライアントに送信できますか? これをサポートしているブラウザはありますか?または、これを行う方法がなく、個々のチャンクではなくストリーム全体を gzip する必要がありますか?
たとえば、チャンク 1 + チャンク 2 やチャンク 2 + チャンク 1 など (異なる順序) のクライアントにサービスを提供したいのですが、毎回ページ全体を圧縮したくなく、ページ全体をキャッシュしたくありません。圧縮済みのキャッシュ済みチャンクを使用して送信したい。
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 ブラウザーにダウンロード ウィンドウが表示されます (理解できません:/