使用Cloudflare的Polish功能缩小图片体积(需要Pro套餐)
在CloudFlare控制面板的Speed -> Optimization菜单下,有一个Polish选项。它可以缩小图片体积,缩短页面加载时间。
那么,它的选项都是意思呢?
5月6日更新
又翻回来,可以用了。
4月4日更新
翻车了,4月3日以后添加的域名不能使用这个功能了。(来源)
CloudFlare Pro购买点此。~
Polish功能的原理?
它会删除图片内置拍摄时间、相机型号之类的标签信息,还可以压缩图片大小。
这些选项怎么选?
- Off: 关闭。
- Lossless: 无损压缩。此选项不会影响图片质量。PNG、GIF文件,会被无损压缩。而JPEG文件仅会被删除标签。
- Lossy: 有损压缩。除了进行Lossless的操作外,还会对JPEG进行压缩,可能会影响图片质量。
- 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来转换。
示例图片
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。