美文网首页
web 压缩算法

web 压缩算法

作者: 追风骚年 | 来源:发表于2023-01-08 11:39 被阅读0次

在一个项目中,我编写了一套代理服务,在测试中我想访问我的网站,我可以将内容转发到 https://www.qq.com/,但是我发现读取这个服务的返回值的时候,发现读取到内容并非完整的 html ,而是看起来像是乱码的内容。

经过一番仔细排查才发现,原来是因为腾讯的服务器是将返回的内容进行 gzip 压缩,我这边将数据进行 gzip 解压,获取关键信息然后进行转发,但是通过 curl 还是无法获取到准确的数据,会报错 curl: (61) Error while processing content unencoding: invalid distance too far back,通过排查发现 curl 添加了 --compress 选项,如果有这个选项,curl 会携带 accept-encoding: deflate, gzip,去掉此选项就能准确返回数据。后面在代理服务增加了对 deflate 的支持,发现 curl 返回成功。

既然文章主题是 web 压缩算法,其实比较流行的算法有 gzip 和 deflate,翻阅 MDN 文档,可以看到还有几个选项,以及可以一次性提供多个选项,让服务器决定使用哪一套算法。

Content-Encoding: gzip
Content-Encoding: compress
Content-Encoding: deflate
Content-Encoding: br

// Multiple, in the order in which they were applied
Content-Encoding: deflate, gzip

gzip 和 deflate 底层差不多使用的是同一套算法,可以从 golang 的源码中得知,并且 gzip 使用了 crc32 作为校验码。

br 算法全称是 brotli,golang 标准库中没有对此算法的实现,谷歌官方有个基于 cgo 的 brotli 算法实现 google/brotli,这套算法压缩率和时间相比 gzip 相比都比较优越,不过对于浏览器支持方面比较欠缺,并且我发现 cloudflare 中已经支持 br 算法,所以套用 cf 的梯子应该可以传输更少的数据提高传输效率。

相关文章

  • web 压缩算法

    在一个项目中,我编写了一套代理服务,在测试中我想访问我的网站,我可以将内容转发到 https://www.qq.c...

  • LZW压缩算法

    参考链接:超级简单的数据压缩算法—LZW算法压缩算法——lzw算法实现LZW算法 LZW 压缩算法正确图解

  • web学习心得V1.0

    [TOC] 知识梳理 第一层级 算法 压缩算法 压缩算法主要有霍夫曼编码压缩和LZ77算法。霍夫曼算法利用建立霍夫...

  • web开发中的压缩、range范围请求

    压缩 Web服务器处理HTTP压缩之gzip、deflate压缩 【Web优化】Yslow优化法则(四)启用Gzi...

  • Linux压缩及归档

    1、归档和压缩 压缩命令工具:gzip,bzip2,xz,zip 归档命令工具:tar Tips 压缩算法:算法不...

  • Linux-压缩、解压缩

    压缩格式:gz, bz2, xz, zip, Z压缩算法:算法不同,压缩比也会不同; compress: FILE...

  • hadoop 数据压缩

    1. hadoop checknative 可以查看hadoop 支持的压缩算法 2. 启用压缩算法总体来说 节...

  • 算法解析:哈夫曼(huffman)压缩算法

    前言 本篇将介绍哈夫曼压缩算法(Huffman compression) 哈夫曼压缩算法(Huffman comp...

  • Flink实战之FileSystem-parquet支持ZSTD

    前言 ZSTD压缩算法是现在最流行压缩算法了,有着高压缩比和压缩性能强的有点,已经被各大框架所使用。目前hadoo...

  • Android

    Android常用图片压缩方式 质量压缩 尺寸压缩 1. 质量压缩 质量压缩通过相应算法进行优化Bitmap的位深...

网友评论

      本文标题:web 压缩算法

      本文链接:https://www.haomeiwen.com/subject/ccrucdtx.html