Javascript &引用;“流媒体”;按块压缩/解压缩

Javascript &引用;“流媒体”;按块压缩/解压缩,javascript,stream,compression,deflate,chunking,Javascript,Stream,Compression,Deflate,Chunking,我正在开发一个JavaScript压缩库。我已经创建了一个相对快速的放气压缩机和解压器,但它们要求在使用之前将数据完全加载到内存中。我不认为为压缩添加流式支持应该太难;我可以将任何可用的数据压缩到一组完整的块中,将结果附加到输出流中,并在传递最后的块之前避免设置BFINAL标记。但是,解压缩流会出现一个问题 由于我的代码当前需要读取一个完整的块来生成输出,并且不保留状态,所以我能做的最好的事情就是猜测一个块的长度,并希望我能到达最后,因为如果我不这样做,我就浪费了多个CPU周期来读取未完成块的头

我正在开发一个JavaScript压缩库。我已经创建了一个相对快速的放气压缩机和解压器,但它们要求在使用之前将数据完全加载到内存中。我不认为为压缩添加流式支持应该太难;我可以将任何可用的数据压缩到一组完整的块中,将结果附加到输出流中,并在传递最后的块之前避免设置BFINAL标记。但是,解压缩流会出现一个问题

由于我的代码当前需要读取一个完整的块来生成输出,并且不保留状态,所以我能做的最好的事情就是猜测一个块的长度,并希望我能到达最后,因为如果我不这样做,我就浪费了多个CPU周期来读取未完成块的头、哈夫曼代码以及长度/文字和距离代码,我得从头再来一遍。这似乎是一种解决问题的糟糕方法,我想知道是否还有其他方法可以做到这一点,而不需要重写代码以保持状态


不,您需要保留状态。或者准备将整个流读入内存。没有任何东西可以阻止放气流由单个长放气块组成。

是否在浏览器中执行此操作?如果是这样的话,为什么不让浏览器为您处理这个问题呢?浏览器实际上没有JS的压缩或解压缩API,尽管它支持压缩内容编码。我们拥有的最接近Chrome的东西是特定于Chrome的,处于草稿阶段,对于完全加载的数据,它比我的库慢: