Stream HTTP/2流式传输和静态压缩 我需要在节点和C++中实现HTTP2服务器。无论如何,我无法掌握如何使流媒体与静态压缩一起工作:

Stream HTTP/2流式传输和静态压缩 我需要在节点和C++中实现HTTP2服务器。无论如何,我无法掌握如何使流媒体与静态压缩一起工作:,stream,compression,http2,Stream,Compression,Http2,我希望以尽可能高的压缩率压缩我的文件,这是在构建时静态完成的 我想流式处理我的HTML,因此浏览器会尽快接收,并且可以预取资源或从本地缓存中检索资源 但是压缩的文件在接收所有数据之前无法读取,是吗 我应该放弃压缩,还是应该单独压缩HTML流块?有更好的办法吗 但是压缩的文件在收到所有数据之前不能被读取,不是吗 这(通常)是不正确的。用于HTML文件的基于Deflate的压缩(例如gzip、brotli)可以在不接收所有数据的情况下进行解压缩 这些工作主要是通过反向引用数据来完成的。例如,上述句

我希望以尽可能高的压缩率压缩我的文件,这是在构建时静态完成的

  • 我想流式处理我的HTML,因此浏览器会尽快接收
    ,并且可以预取资源或从本地缓存中检索资源

  • 但是压缩的文件在接收所有数据之前无法读取,是吗

    我应该放弃压缩,还是应该单独压缩HTML流块?有更好的办法吗

    但是压缩的文件在收到所有数据之前不能被读取,不是吗

    这(通常)是不正确的。用于HTML文件的基于Deflate的压缩(例如gzip、brotli)可以在不接收所有数据的情况下进行解压缩

    这些工作主要是通过反向引用数据来完成的。例如,上述句子重复提到“压缩”文本:

    基于Deflate的压缩离子(例如gzip、brotli)可以在不接收所有数据的情况下进行反压缩

    因此,第二个实例可以替换为对第一个实例的反向引用:

    基于Deflate的压缩(例如gzip、brotli)可以在不接收所有数据的情况下进行反编译(-49,8)

    因此,您可以看到,只要您按照顺序(HTTP保证)从一开始就阅读,那么您不需要任何后续数据来解压缩您已经收到的内容,但您确实需要任何以前的文本


    类似地,JPEG通常在完全接收之前就显示出来,可以逐行加载(非渐进式JPEG),也可以在加载更多数据时增强模糊图像(渐进式JPEG)。

    谢谢,我刚刚测试了它,它可以跨操作系统和浏览器工作。唯一的问题是brotli不支持从命令行解压被截断的文件。老实说,我认为大多数gzip客户端也不支持。正如我所展示的,不是出于任何技术原因,更多的是因为可能没有太多的要求,并且警告您文件已被切断。