在CloudFlare控制面板的Speed -> Optimization菜单下,有一个Polish选项。它可以缩小图片体积,缩短页面加载时间。
那么,它的选项都是意思呢?

5月6日更新

又翻回来,可以用了。

4月4日更新

翻车了,4月3日以后添加的域名不能使用这个功能了。(来源
CloudFlare Pro购买点此。~

Polish功能的原理?

它会删除图片内置拍摄时间、相机型号之类的标签信息,还可以压缩图片大小。

这些选项怎么选?

  1. Off: 关闭。
  2. Lossless: 无损压缩。此选项不会影响图片质量。PNG、GIF文件,会被无损压缩。而JPEG文件仅会被删除标签。
  3. Lossy: 有损压缩。除了进行Lossless的操作外,还会对JPEG进行压缩,可能会影响图片质量。
  4. WebP: 浏览器支持的情况下,会发送WebP格式的图片。JPEG有损,GIF和PNG无损。太大的JPEG文件会被转换成渐进显示的图片,也就是在加载过程中,图片会逐渐变得清晰。WebP转换不会影响URL,也就是说,虽然URL后缀是JPEG、PNG等,但是图片内容已经是WebP了。

怎样确定Polish是否生效?

你可以查看文末图片的请求头,返回的请求头会包含以下三个字段:

cf-bgj: imgq:100
cf-cache-status: HIT
cf-polished: origSize=4279085, status=webp_bigger

  • cf-bgj 表示Polish已经生效,imgq参数表示图片质量,此处的100表示无损。
  • cf-cache-status 表示图片已被缓存,Polish可生效。
  • cf-polished 提供了原始图片大小和一个状态码。下面会对常见的状态码进行解释。

常见状态码

下面是cf-polished字段中,常见的状态码。如果cf-polished字段没有出现在请求头,可以尝试purge这个图片。

  • input_too_large 图片太大或者太复杂了。推荐对小于1000px和10MB的png、jpeg图片启用此项功能。
  • not_compressed or not_needed 源图片已经优化得足够好,无需再进行操作了。
  • webp_bigger 没有转换成WebP,因为源文件已经优化得足够好,或者质量不佳,转换成WebP的话,会变得更大。Because the WebP version doesn’t exist, the status is set on the JPEG/PNG version of the response.(这句没看懂)
  • cannot_optimize 或者 internal_error 源图片损坏,请重新上传到源服务器。
  • format_not_supported 不支持的格式(比如BMP,TIFF)。
  • vary_header_present 源服务器发送的回复头Vary不是accept-encoding,而是其他值。如果是在源服务器进行了WebP转换,请不要这么做,让CloudFlare来转换。

示例图片

示例图片