作者:Addy Osmani
鸣谢: Kornel Lesiński, Estelle Weyl, Jeremy Wagner, Tim Kadlec, Nolan O’Brien, Pat Meenan, Kristofer Baxter, Henri Helvetica, Houssein Djirdeh, Una Kravets, Elle Osmani and Ilya Grigorik.
感谢他们的帮助和评论。
翻译&校验:freedom
我们都应该实现图像压缩的自动化。
图像优化应该是自动化的。图像优化的最佳实践发生变化很容易被忽略,而且不经过构建管道的内容很容易丢失。为了实现自动化:在构建过程中使用Imagemin或libvip。这些有许多替代方案。
大多数CDN(如Akamai)和第三方解决方案,如Cloudinary、imgix、Fastly’s Image Optimizer、Instart Logic’s SmartVision或ImageOptim API都提供了全面的图像优化自动化解决方案。
在阅读博客文章和调整配置上花费的时间可能会超过服务月费(Cloudinary有一个免费套餐)。如果你不想关心这项工作外包的成本或延迟问题,那么上面的开源选项是可靠的。像Imageflow或Thumbor这样的项目启用了自我托管的替代方案。
每个人都应该高效地压缩自己的图像。
至少:使用ImageOptim。它可以显著地减小图像的大小,同时保持视觉质量。也可以使用Windows和Linux的替代方案。
更具体地说:通过MozJPEG运行JPEG(对于Web内容,Q=80
或更低都没问题),并考虑支持渐进式JPEG,PNG通过pngquant优化,SVG通过SVGO优化。显式删除元数据(pngquant用--strip
)以避免网络膨胀。代替超级巨大的GIF动画,提供H.264视频(或为Chrome、Firefox和Opera提供WebM)!如果你连Giflossy都不能用。你又要节省额外的CPU周期,需要的图像质量高于web的平均质量,并且编码慢一点也能接受的话:试试Guetzli。
一些浏览器通过接受请求头来宣布对图像格式的支持。这可以用于有条件地提供格式:例如,基于Blink的浏览器(如Chrome)使用有损WebP,而对于其他浏览器则使用JPEG/PNG。
总是有很多你能做到的。有工具可以生成和服务srcset
断点。在具有客户端提示的基于Blink的浏览器中,资源选择可以自动化,并且如果用户选择在浏览器中“保存数据”,那么可以通过遵从保存数据提示来减少字节数。
你可以使你的图像文件大小越小,你就可以为用户提供更好的网络体验 —— 尤其是在移动平台上。在这篇文章中,我们将探讨通过现代压缩技术减少图像大小的方法,并将对图像质量的影响降到最低。