每个 WordPress 网站最终都会撞上同一个问题。图片是页面上最重的东西,编辑上传的是相机直接吐出来的文件,而移动端分数为此付出代价。惯常的答案是装一个图片优化插件,惯常的候选是 Smush、ShortPixel 和 Imagify。
还有第二种做法,它的运作方式完全不同,而这个对比很少被公平地做出来,因为它并不是同类产品。Cloudflare Image Transformations 不会压缩你的图片再把结果存起来,而是在图片被请求的那一刻重写它。理解这个差别,决策就完成了一大半。
真正决定选择的区别: 插件处理并存储你图片的优化副本。Cloudflare 按请求转换,并把结果缓存在边缘。插件按你拥有多少张图片计费。Cloudflare 按你提供多少个不同变体计费。这两种模型适合的网站截然不同。
两种做法有何不同
传统的优化插件工作在你的媒体库上。它取走每一张上传的图片,发送到厂商服务器或在本地处理,压缩之后把结果写回去。你的媒体库最终存着优化过的文件,而且常常是多个尺寸。这项工作只发生一次,在上传时或批量运行时,结果留在你的源站上。
转换把这件事反了过来。你的原图原封不动。当访客请求一张图片时,请求经过 Cloudflare,它在途中完成缩放和格式转换并缓存结果。没有任何东西被写回你的媒体库,而你随时可以改变提供的尺寸,只需改一个 URL,而不是重新处理整个媒体库。
这带来一个很多人很晚才发现的实际后果。用插件时,如果你明年决定缩略图应该换个尺寸,你要重新生成整个媒体库。用转换时,你改一个参数。
各家免费额度真正给了什么
对比在这里变得具体,而营销页面在这里帮助最小。
Smush,来自 WPMU DEV,活跃安装量超过一百万。免费版提供无损和有损压缩、批量优化和懒加载。需要知道的限制是:超过五兆字节的图片会被整个跳过,而大多数人真正想要的东西,也就是 WebP 和 AVIF 转换、CDN 分发以及自动缩放,全都是 Pro 功能。免费版是个压缩器,不是一条现代格式流水线。
ShortPixel 安装量超过三十万,采用积分模式。每处理一张图片或缩略图消耗一个积分,每月赠送一百个免费积分。这听起来很慷慨,直到你想起 WordPress 每次上传都会生成多个缩略图尺寸,所以一张照片可能消耗四到五个积分。每月无限积分是 9.99 美元,一次性套餐从 19.99 美元起。WebP 和 AVIF 都包含在内,高级套餐还带 CDN。
Imagify,来自 WP Media,安装量同样超过一百万。免费额度是每月二十兆字节的图片,大约两百张。WebP 和 AVIF 转换包含在所有套餐里,免费版也不例外,这是三家在格式方面最慷慨的立场。产品中不含 CDN。
Cloudflare Image Transformations 在免费套餐下每月给你五千次唯一转换,之后每千次五十美分。一次唯一转换是指每个自然月里图片与参数的一个不同组合,所以把同一张缩放后的图片提供给五万名访客只算一次。自动格式选择算作一次转换,即使一部分浏览器拿到 AVIF 而另一部分拿到 WebP。
哪种模型适合哪种网站
诚实的答案取决于你媒体库的形态,而不是哪个产品更好。
媒体库稳定的小网站。 几百张很少变动的图片。任何一个插件都能从容应付,尤其 Imagify 的免费额度很可能完全覆盖。这种情况几乎没有理由把 Cloudflare 加进技术栈。
尺寸繁多的大型目录。 数千件商品的商店,每件都需要缩略图、网格方块和详情视图。按积分计价对这种形态惩罚很重,因为每件商品的每一张缩略图都在消耗积分。转换按不同变体计费,与你有多少商品无关,而重复请求的折扣意味着热门页面不会产生额外费用。
流量很大但图片很少的网站。 转换在这里发光,因为计费完全不跟随流量。一篇爆款文章把同样的十二张图片提供给十万人,仍然是十二次转换。
持续上传的网站。 每天新增几十张图片的媒体,会在几天内耗尽 Imagify 的二十兆字节或 ShortPixel 的一百个积分。两者都需要付费套餐。Cloudflare 或许也会,这取决于每次上传需要多少个尺寸。
站点前面没有 Cloudflare。 那么不迁移 DNS 的话转换根本不是选项,插件是务实的选择。
没人提起的成本
每一张对比表里都缺了两样东西。
存储空间。 在原图旁边保留优化副本的插件会增加你的磁盘占用,有时相当可观,因为 WordPress 本来每次上传就生成多个尺寸,而插件又为其中每一个添加转换版本。在廉价的共享主机上,这偶尔会取代速度成为真正的瓶颈。
重新处理。 换主题,图片尺寸就变,基于插件的方案需要一次完整的重新生成。在大型媒体库上这意味着数小时的服务器负载,而人们往往正是在这一刻发现自己的主机有 CPU 限制。
这两点都不是回避插件的理由。它们只是落在价格页之外的成本,而且随着媒体库变大,它们越来越有利于请求时转换这种模型。
怎么判断你在为什么付费
在做选择之前,先数清关于你自己网站的四件事。这需要一个下午,而它比任何对比表都更可靠地决定答案。
你持有多少张图片。 是媒体库的数量,不是页面数量。这决定了按积分计价是否根本可行。
每张需要多少个尺寸。 检查你的主题实际请求了什么。WordPress 默认每次上传生成多个尺寸,而多数主题只用其中两三个。如果你的主题注册了八个自定义尺寸却只用四个,那么这份名单上的每一个插件你都在为剩下四个的处理付费,用 Cloudflare 也在为它们的转换付费。修剪这份名单,在两种情况下都是白捡的钱。
媒体库多久变一次。 每天上传的媒体和去年最后一次改动的展示型网站,面对的是不同的问题。月度配额惩罚前者,对后者则毫无影响。
图片占了多少流量。 只有 Cloudflare 的模型对此不敏感,也只有插件的 CDN 层级会为此收费。高流量、少图片的网站是支持转换的最清晰案例。
把这四个数字写下来,选择通常会自己浮现。数错了,你会在续费时发现,或者在一次批量重新生成于目录中途超时的时候发现。
两者并用
这两种做法并不互斥,而且组合起来往往才是合理的答案。上传时用插件压缩,让原图不至于无谓地重;分发时把尺寸调整和格式转换交给转换来做。你会得到更小的媒体库和更小的传输量,而且两套机制不会重复彼此的工作。
不该做的是同时运行两套都在转换格式的系统。两个插件争夺 WebP 生成会产生令人困惑的结果和被浪费的处理,而这正是图片在桌面上显示正常、在较旧的移动浏览器上却出问题的常见原因。
如果你想在 WordPress 上自动化 Cloudflare 这一侧而不必写 Worker,我维护的插件 会把你的图片 URL 改写为使用转换,补上缺失的宽高属性,并允许你把不希望被触碰的外部来源加入白名单。它是免费的,也不会附加自己的积分制度。
关于 URL 格式与 Worker 方式的机制,请看 Cloudflare Image Transformations 。如果你同时还在决定文件该放在哪里,用 Cloudflare R2 托管图片 讲了存储这一侧以及它为零的出站费用。
为你的网站得出答案
这个决定归结为一些你在一个下午就能数清的数字:你持有多少张图片,每张需要多少个尺寸,媒体库多久变一次,以及 Cloudflare 是否已经在你的网站前面。这四个答案会清楚地指向其中一个选项,而搞错它们的代价,是那种事后拆解起来很烦人的昂贵。
Mecanik 会先做 WordPress 性能审计 ,量出图片究竟让你付出了多少代价,然后才建议任何改动;当修复超出安装某个东西的范围时,也会通过 WordPress 开发 工作承接实施。
相关文章: WooCommerce 商品图片:分类页为什么这么慢 、WooCommerce 为什么慢:真正的四个原因 、Cloudflare R2 价格详解 - 与 S3 和 Backblaze 的真实成本对比 、Cloudflare Email Routing - 自定义域名免费邮箱 。
常见问题
Cloudflare Image Transformations 比 Smush 或 ShortPixel 更好吗? 不是更好,是不同。插件压缩并存储优化副本,按你拥有多少张图片计费。Cloudflare 按请求转换,按不同变体计费。大型目录通常更适合 Cloudflare,小而稳定的媒体库通常更适合插件。
哪个图片插件的免费额度最好? Imagify 在免费套餐里就包含 WebP 和 AVIF 转换,而 Smush 把这些限制在 Pro,但 Imagify 每月只给二十兆字节。ShortPixel 每月给一百个积分,不过 WordPress 缩略图每次上传要消耗好几个。Cloudflare 给五千次唯一转换。
我可以同时使用优化插件和 Cloudflare 吗? 可以,而且常常是合理的。上传时用插件压缩,让原图不至于无谓地重,把尺寸调整和格式转换交给 Cloudflare。避免两套系统都转换成 WebP,那会浪费处理并产生不一致的结果。
使用转换需要 Cloudflare 在我的网站前面吗? 需要。转换适用于通过你 Cloudflare 账户下的区域提供的图片。如果你的 DNS 不在 Cloudflare,或者图片来自账户之外的主机,请求会绕过这套机制,插件才是务实的选择。
图片优化真的能改善 Core Web Vitals 吗? 通常可以,因为图片往往主导页面重量,而其中最大的一张常常正是 Largest Contentful Paint 元素。以现代格式提供尺寸正确的图片会直接降低这个指标,但它无法解决脚本或服务器响应时间造成的缓慢。
评论