你的CSS文件,一半都是多余的
打开你项目的 main.css,数一下换行和空格占了多少。
10KB 的 CSS 文件,格式化之后可能是 15KB。多出来的 5KB,全是空格、换行、注释。浏览器不会读这些,但用户在下载。
上线前压缩一下,体积直接减 30%-50%。 不用改代码,工具帮你做。
CSS压缩到底改了什么?
拿一小段代码对比:
压缩前:
.box {
color: #ff0000;
margin: 0px 0px 0px 0px;
background-color: #ffffff;
/* 这是注释,也被删了 */
padding: 0;
}
压缩后:
.box{color:red;margin:0;background-color:#fff}
三样东西被干掉了:
| 改了什么 | 例子 | 省了多少 |
|---|---|---|
| 空格和换行 | color : red → color:red | 少量 |
| 注释 | /* ... */ | 看注释多少 |
| 颜色短写 | #ffffff → #fff | 每处省3字符 |
| 零值简写 | 0px → 0 | 少量 |
最大的收益在注释和换行。 一份 50KB 的 CSS,格式化有 120 行,压缩后可能只有 30 行,体积直接砍一半。
3个高频使用场景
场景1:上线前最后一步减重
很多团队的流程是:开发阶段保留格式化代码方便阅读,上线前跑一遍压缩。
# 手动压缩(不依赖工具)
cat main.css | tr -d ' \n\t' > main.min.css
但这样压缩不彻底——颜色不会短写、注释不会删干净。用在线 CSS 压缩工具,压缩更彻底,而且你能看到压缩前后体积差多少。
场景2:CDN 缓存策略优化
CDN 对相同文件名的内容做缓存。压缩后的文件体积更小,首次加载更快,后续命中缓存时省下的流量也更多。
如果你的 CDN 已经缓存了未压缩的 main.css,换个文件名成 main.min.css,让 CDN 重新拉取压缩版本。
场景3:学习CSS短写规则
压缩工具帮你做了一件事:让你看到哪些属性可以短写。
比如:
border: 1px solid #000等于border-width:1px; border-style:solid; border-color:#000margin: 0 auto等于margin-top:0; margin-right:auto; margin-bottom:0; margin-left:auto
看多了压缩结果,你对 CSS 简写规则会更有感觉。
在线工具操作:3步搞定
- 粘贴 CSS 代码:把整个文件内容粘进去,或者拖入文件(工具支持大文件)
- 点"压缩":工具去掉空格、换行、注释,短写颜色值和零值
- 复制结果:左侧是压缩前,右侧是压缩后,体积对比一眼看到。复制右侧内容替换原文件
注意:压缩是不可逆的。 压缩后的代码人基本读不了。永远保留一份格式化版本在 git 里,压缩版本只出现在构建产物里。
压缩不彻底?检查这3点
如果你的 CSS 压缩完体积没降多少,大概率是:
- 注释太多:删掉所有
/* */,包括 license 注释(如果不需要保留) - 重复属性:同一个选择器写了两次
color,第二个覆盖第一个。压缩工具不会帮你删重复,得手动理 - 未使用的选择器:压缩工具只做文本级压缩,不会删没用到的类名。这得靠构建工具(PurgeCSS、Critical CSS)来处理
文本压缩省 30%,死代码消除能再省 50%-70%。 两个一起做,效果翻倍。
小结
CSS 压缩是前端优化里最便宜的一招,不改一行逻辑,体积直接砍半。
你现在的 main.css 压缩后能省多少?试一下,评论区报个数。