我们有一个场景,我们在一个响应中发送多个json文件。这些json文件作为单独的blob存储在后端(aerospike blobstore)中,并且是为响应单个请求而动态获取的。
只要我们发送这些blob未压缩它的工作正常。即我们在每个blob之后添加一个分隔符,并使用此分隔符来隔离每个json blob,如下所示 -
{
// first json here
}
-- JSONEND--blobid1
{
// second json here
}
-- JSONEND--blobid2
等等。
只要Blob从源代码中解压缩,即blob存储就可以正常工作,我们可以在解析后将javascript中的每个json隔离成一个单独的变量。
但我们面临的挑战是 - 这些blob由于各种原因(性能/减少的磁盘空间)进行了预压缩并保存到blobstore中,我们希望简单地将这些压缩blob发送到客户端的一个响应中。客户端的脚本使用这些blob并将它们解析为单独的json对象树。
这可能吗?怎么样 ?我们只需要支持chrome和firefox。
答案 0 :(得分:1)
如果您使用Gzip
并且您拥有nodejs
服务器
请参阅此处,如何使用gzjoin
gzjoin.c
join gzip files without recalculating the crc or recompressing
- illustrates the use of the Z_BLOCK flush parameter for inflate()
- illustrates the use of crc32_combine()
https://github.com/nodejs/node/tree/master/deps/zlib/examples
答案 1 :(得分:0)
这是正确的答案:
gzlog.c
gzlog.h
efficiently and robustly maintain a message log file in gzip format
- illustrates use of raw deflate, Z_PARTIAL_FLUSH, deflatePrime(),
and deflateSetDictionary()
- illustrates use of a gzip header extra field
OR
zpipe.c
reads and writes zlib streams from stdin to stdout
- illustrates the proper use of deflate() and inflate()
- deeply commented in zlib_how.html (see above)
OR
zran.c
index a zlib or gzip stream and randomly access it
- illustrates the use of Z_BLOCK, inflatePrime(), and
inflateSetDictionary() to provide random access