SEO 百科
压缩
本页目录
压缩
压缩 是在把网页文件发给浏览器之前,用算法把它的体积变小,浏览器收到后再解压还原的做法。它能缩短传输时间,对最大内容绘制(LCP)有直接帮助;但它只对文本类文件有效,已经压过的图片和视频再压一次没有意义。
编码的协商过程
压缩发生在服务器一侧,由浏览器先表态。浏览器在请求里带 Accept-Encoding,写明自己能解哪些编码;服务器选中一种,用 Content-Encoding 告诉浏览器这份内容用了什么编码[1]。
Accept-Encoding: gzip, deflate, br
Content-Encoding: br
MDN 说它“列出了对当前应用资源的任何编码类型,以及编码的顺序”[1]。浏览器照着这个值解码,就能还原出原始的媒体类型。
这一步不影响页面内容,只是把同一份内容换一种更小的写法传过去。
Gzip 与 Brotli 的差别
两者都是通用压缩算法,差别在压缩率与浏览器支持面。
| 算法 | 编码值 | 特点 |
|---|---|---|
| Gzip | gzip |
兼容性最广,压缩率一般 |
| Brotli | br |
压缩率更高,老浏览器可能不支持 |
| Zstandard | zstd |
较新,支持面还在扩大 |
Gzip 用 LZ77 算法加 32 位校验[1]。Brotli 是它的后继,规范写在 RFC 7932 里[2]。HTTP Archive 的统计给出过差距:Brotli 的压缩率比 Gzip 高出 20% 到 26%[5]。
两种编码同时开着时,浏览器带 br 就按 Brotli 处理[3]。老浏览器不支持 Brotli,会自动回到 Gzip,因此两个都开着比只开一个稳妥。
适用与不适用的文件类型
能压的是文本。这类文件主要是 HTML、CSS、JavaScript、JSON、SVG 和 XML[3]。它们的共同点是内容里有大量重复的空格、标签名和单词,算法能找到规律。
不该压的是已经压过的格式。MDN 提醒,对已经压过的格式再做压缩“并不合适”,因为结果可能反而变大[1]。阿里云的说明更具体:PNG、JPG 等图片和 MP4 等视频本身已经压缩,再开压缩没有效果,建议关闭[3]。
与抓取和指标的关系
压缩省下的是下载时间。文件更小,浏览器拿到内容更早,LCP 这类指标随之改善。
对抓取同样有影响。服务器响应越快,爬虫单位时间能取回的页面越多,而百度会按服务器压力调整抓取频次[4]。压缩是降低单次传输开销的手段,和缓存、CDN 一起用才明显。
有一处例外要记住。源站如果已经压过,响应里带了 Content-Encoding,边上再挂 CDN 压缩就不再生效[3]。重复压缩既浪费,也可能让文件变大。
常见误用
- 给图片和视频开压缩,以为能再省一半。它们已经压过,结果通常没变化。
- 只开 Gzip 就收工,忽略了 Brotli 更小的体积。
- 源站和 CDN 两头都压,响应里出现两层编码,排查时容易看错。
- 开了压缩后文件的 MD5 值会变,还在按旧值做校验就会失败[3]。
附录
参见
参考资料
官方(境外)
- 《Content-Encoding》,MDN Web 文档,2025-07-04 更新。
- 《Brotli Compressed Data Format》,IETF,2016-07。
官方(国内)
- 《Brotli 压缩》,阿里云,2026-09-20 更新。
- 《平台工具使用手册(抓取频次)》,百度搜索资源平台,2020-08-14 更新。
第三方
- 《CDN》,HTTP Archive《Web Almanac》,2026-01-15。
外部链接
无。