← 返回博客

你的 CDN 和存储桶账单,有多少是白付的

本文不引用任何"行业平均"数字。文中的压缩数据都来自我们自己跑的实测,成本计算给的是公式,代入你自己账单上的单价就能算出结果。 每个月看云账单,大多数人只看总数:比上个月多了一点,还在预算内,就这么过去了。 但如果把账单展开,按产品拆开看,很多网站、小程序、内容平台会发现,排在前面的往往就两项:…

分享

本文不引用任何"行业平均"数字。文中的压缩数据都来自我们自己跑的实测,成本计算给的是公式,代入你自己账单上的单价就能算出结果。

每个月看云账单,大多数人只看总数:比上个月多了一点,还在预算内,就这么过去了。

但如果把账单展开,按产品拆开看,很多网站、小程序、内容平台会发现,排在前面的往往就两项:

  • 对象存储:按 GB·月 收存储费
  • CDN / 公网流量:按 GB 收下行流量费

而这两项里,最占地方的通常是图片。

问题是,这些图片里有相当一部分字节,用户根本看不出来,你却每个月都在为它们付钱。


一、"上传时压过了",不代表压够了

很多团队会说:"我们上传的时候就压过了。"

我们专门测过这种情况。样本是一个允许用户上传图片的网站,入库时已经自己做过一轮常规压缩:78 个文件夹,4624 张图片,总共 1.41 GB。

体积 相对原始
网站已压缩过的原文件 1.41 GB —
打包成 zip 1.41 GB -0.2%
ImgZilla 再压缩 0.75 GB -46.8%

在"已经压过"的基础上,又省下了将近一半。 而且 4624 张里每一张都还能继续压,没有一张是"已经到底、直接跳过"的。

原因不复杂:大多数入库压缩只是统一设一个质量参数,或者限制一下尺寸,属于偏保守的一次性处理,远没有把每种格式的编码空间用完。

如果你的图片库是相机直出、设计稿导出,或者运营直接上传的原图,空间就更大了。我们在 32188 张相机直出 JPEG 上测过,整体体积减少了 76.8%。


二、存储费是加法,流量费是乘法

这是最容易被忽略的一点。

  • 存储费:一张图存在桶里,按它的体积每个月收一次钱
  • 流量费:一张图每被打开一次,就按它的体积再收一次钱

所以一张首页 banner 多出 300 KB 的无效字节,在存储账单上几乎看不出来,但每天被打开 10 万次,流量账单上就是每天多出约 29 GB。

图片越热门,白付的钱越多。 而最热门的图,恰恰是首页图、商品主图、文章头图这些最常被"随手上传原图"的位置。


三、算一笔你自己的账

不用相信任何人的估算,拿出你上个月的账单,代入下面两个公式:

复制代码
每月可省存储费 ≈ 图片总存储量(GB) × 压缩率 × 存储单价(元/GB·月)
每月可省流量费 ≈ 图片月下行流量(GB) × 压缩率 × 流量单价(元/GB)

压缩率可以先保守按 40% 估算(比我们在"已压缩过"样本上测出的 46.8% 还低一些),等跑完自己的图片再换成实际数字。

举个演示用的例子(单价是假设值,请换成你账单上的数字):

项目 数值
图片存储量 500 GB
图片月下行流量 10 TB
存储单价(假设) 0.12 元/GB·月
流量单价(假设) 0.20 元/GB
  • 存储:500 × 40% × 0.12 ≈ 24 元/月
  • 流量:10240 × 40% × 0.20 ≈ 819 元/月

可以看出来,真正的大头在流量。存储省的是零头,流量省的才是正经钱。而且这笔钱是每个月都在付,图片不处理就一直付下去。

还有一些账单上看不到的收益:页面加载更快,移动端用户少花流量,LCP 指标更好看,小程序主包更容易压到限额以内。


四、为什么明知道该压,却一直没人去压?

我们问过不少开发者和站长,答案基本就三个:

1. 怕改路径。
传统在线压缩工具要"上传 → 下载 → 改名 → 替换 → 改代码里的引用",几千张图的项目,没人敢动。

2. 怕画质出问题。
压完被设计、运营或者老板说"图糊了",谁也不想背这个锅。

3. 太麻烦。
目录一层套一层,一张张处理不现实,写脚本又要调参数、处理各种格式。

ImgZilla 就是为了解决这三件事做的:

  • 原地压缩:压完直接替换原文件,文件名、目录结构完全不变,代码里的引用一行都不用改
  • 视觉无损:PNG、SVG 是真正的无损;JPEG、WebP、AVIF、HEIC 按每种格式单独调参,控制在肉眼分辨不出的范围内。内置左右分屏对比,可以放大到实际像素自己检查
  • 拖一个文件夹进去就行:递归处理所有子目录,不用挑文件,不用调滑块
  • 全部本地处理:内部素材、未发布的商品图都不用上传到第三方服务器

五、给存储桶"瘦身"的实际流程

如果你的图片已经放在对象存储里,流程大概是这样:

  1. 同步到本地:用 rclone、ossutil、coscmd、aws s3 sync 这类工具,把图片目录拉到 Mac 上
  2. 先备份一份:放心,这是好习惯,不是因为工具不可靠
  3. 拖进 ImgZilla:整个目录拖进去,等它跑完
  4. 同步回存储桶:用同一个工具覆盖上传,路径不变
  5. 刷新 CDN 缓存:对图片目录做一次目录刷新,让边缘节点拿到新文件

第 5 步别漏了。不刷新的话,CDN 节点会继续分发旧文件,流量账单要等缓存过期以后才会降下来。


六、诚实说明

  • ImgZilla 目前只有 macOS 版(需要 macOS 12.3 及以上),没有 Windows 版
  • 除了 PNG 和 SVG,其他格式是视觉无损,不是像素级无损。如果你的业务要求像素完全不变(比如医学影像、需要做像素比对的素材),请不要对这类文件做重编码
  • 压缩率因图而异。我们实测的单张压缩比从 32% 到 86% 都有,建议先挑一个目录试跑,看实际数字再决定

最后

云厂商不会提醒你图片可以再小一点,账单上也不会单独列一行"无效字节"。

但它就在那里,每个月按 GB 计费,每被访问一次就再收一次。

把图片目录拖进 ImgZilla 跑一遍,下个月对比一下账单。

👉 下载 ImgZilla:https://imagetool.app/ImgZilla

想让图片更小更快?

下载 ImgZilla,在本机完成压缩,图片不上传云端。