SEO 百科
合并与精简
本页目录
合并与精简
合并与精简 包含两件事:把多个 CSS 或 JavaScript 文件合成一个,以及去掉源码里的空格、注释与换行。它缩小的是传输体积,代价是排查变难,缓存粒度也变粗,改一行会让整包重新下载。
两件事各自的出发点
合并针对的是请求数量。浏览器每取一个文件都要走一次请求,HTTP/1.1 下并发连接有限,文件一多,排队就明显。把多个小文件合成一个,请求数随之下降。
精简针对的是文件大小。它去掉的是源码里给人看的那些字符,对浏览器执行没有影响。以 HTML 为例,注释 <!-- ... -->、CSS 里的 /* ... */、JavaScript 里的 // ... 都可以删掉[1]。
阿里云把这件事做成了开关:开启页面优化后,CDN 会自动删除注释与重复空白符,涉及 HTML、CSS 与内嵌 JavaScript[2]。步骤不用自己写脚本,但要多一层验证。
请求数变少的收益
请求数少了,页面开始渲染的时间提前,LCP 往往跟着改善。HTTP/2 之后并发能力大幅提升,合并的收益比 HTTP/1.1 时代小,但仍然存在,尤其是小文件很多的时候。
顺带省下带宽。文件少了,每次请求携带的标头也少了。
HTTP Archive 分析过大量第三方资源,建议接入的资源选自已经精简并压缩过的发布版本[4]。自己站内的文件同理。
排查难度上升
合并之后,浏览器里看到的是一整个打包文件,报错行号对不上源码。出错时先要把打包文件拆回原来的模块,成本比不改高。
还有一类风险来自精简本身。删除字符时若碰到模板字符串或依赖空格的写法,去掉就改变了语义。阿里云提到,开启页面优化后,改写 HTML、CSS、JS 可能影响业务逻辑,客户端会出现脚本报错,这时关掉该功能即可[2]。
缓存粒度变粗
合并把多个文件的更新绑在一起。这些文件原先各有各的地址,改动其中一个,只有那一个的缓存失效;合成一个包之后,改任意一行,整包的地址或校验值都变,之前的整包都要重新下载。
解法是把长期不变的库拆出去,单独打包。常用库如框架、工具函数的版本很少变,可以按文件名带版本号的方式长期缓存;业务代码变化频繁,单独成一个包。这样改业务不会连累库文件。
与抓取和指标的关系
合并与精简改善的是加载时间,因此对 LCP 有利。它们不改变页面内容,对收录不构成直接影响。
但不能压过头。请求数太少时,首个页面要等一个很大的包下载完才开始渲染;把不急着用的脚本拆出去按需加载,往往比全部合并更快。
服务器压力这一头仍然成立。百度会按内容更新频率和服务器压力调整抓取频次[3],页面传输更快,抓取量更容易维持。
常见误用
- 把所有小文件合成一个巨型文件。首屏要等整包下载完,反而更慢。
- 合并后删掉源码,线上出问题无从对照。至少留一份未精简的版本。
- 只精简一次,后续改代码时忘了重新跑。
- 开着页面优化的同时又开压缩,结果只剩其中一项生效[2]。
附录
参见
参考资料
官方(境外)
- 《优化基于文本的资源的编码和传输大小》,web.dev(Google)。
官方(国内)
- 《页面优化》,阿里云,2026-09-16 更新。
- 《平台工具使用手册(抓取频次)》,百度搜索资源平台,2020-08-14 更新。
第三方
- 《Third Parties》,HTTP Archive《Web Almanac》,2022-09-26。
外部链接
无。