图片内容分发网络 (CDN) 非常擅长针对 Web 优化图片。将网站切换到图片 CDN 可节省 40-80% 的图片文件大小,并且在大多数情况下,它们比构建时图片优化脚本更好地优化图片。
什么是图片 CDN?
图片 CDN 专门用于转换、优化和传送图片。您也可以将其视为用于访问和处理网站上所用图片的 API。对于从图片 CDN 加载的图片,图片网址不仅会指明要加载的图片,还会指明尺寸、格式和质量等参数。 这样,您就可以针对不同的应用场景创建图片的变体。
图片 CDN 与构建时图片优化脚本的不同之处在于,它们会根据需要创建新版本的图片。因此,与构建脚本相比,CDN 通常更适合创建针对个别客户端进行高度自定义的映像。
图片 CDN 如何使用网址来指明优化选项
图片 CDN 使用的图片网址会传达有关图片的重要信息,以及应应用于该图片的转换和优化。网址格式因您使用的图片 CDN 而异,但从宏观角度来看,它们都具有类似的功能。下面是一些最常见的功能。
来源
图片 CDN 可以位于您自己的网域或图片 CDN 的网域中。第三方图片 CDN 通常会提供付费使用自定义域名的选项。使用您自己的网域可以更轻松地在以后切换图片 CDN,因为无需更改网址。
上述示例使用的是图片 CDN 的网域(“example-cdn.com”)和个性化子网域,而不是自定义网域。
映像
通常,您可以将图片 CDN 配置为在需要时自动从其现有位置检索图片。此功能通常通过在图片 CDN 生成的图片的网址中包含现有图片的完整网址来实现。例如,您可能会看到如下所示的网址:https://my-site.example-cdn.com/https://flowers.com/daisy.jpg/quality=auto。此网址将检索并优化 https://flowers.com/daisy.jpg 处的图片。
请求的文件格式(示例中为 JPG)可能与返回的图片文件格式(示例中为 WebP)不同。content-type HTTP 标头会告知浏览器网址采用哪种格式,以便浏览器可以适当地处理网址。如果文件保存到磁盘并由另一个程序使用,而该程序要求格式与文件扩展名匹配,则可能会导致混淆。
另一种广泛支持的图片 CDN 上传方式是在 HTTP POST 请求中将图片发送到图片 CDN 的 API。
安全密钥
安全密钥可防止他人创建新版本的映像。 启用此功能后,映像的每个新版本都需要一个唯一的安全密钥。
如果有人尝试更改图片网址的参数,但未提供有效的安全密钥,则无法创建新版本。图片 CDN 会为您处理生成和跟踪安全密钥的细节。
转换
图片 CDN 提供数十种(在某些情况下为数百种)不同的图片转换。这些转换在网址字符串中指定,并且可以同时使用多个转换,没有任何限制。对于 Web 性能,最重要的图片转换是大小、像素密度、格式和压缩。这些转换就是改用图片 CDN 通常会使网站图片文件变小的原因。
由于通常存在客观上最佳的性能转换设置,因此一些图片 CDN 支持这些转换的“自动”模式。例如,您可以让 CDN 自动选择并提供最佳格式,而不是指定将图片转换为 WebP 格式。图片 CDN 可以使用以下信号等来确定转换图片的最佳方式:
- 客户端提示(例如视口宽度、DPR 和图片宽度)
Save-Data标头- 用户代理 请求标头
- Network Information API
例如,图片 CDN 可能会向 Chrome 浏览器提供 AVIF,向 Edge 浏览器提供 WebP,向非常旧的浏览器提供 JPEG。自动设置很受欢迎,因为它们让您能够利用图片 CDN 在优化图片方面的专业知识,而无需在图片 CDN 开始支持新技术时更改代码以采用这些技术。
图片 CDN 的类型
图片 CDN 主要分为两大类:自行管理的 CDN 和第三方管理的 CDN。
自行管理的图片 CDN
对于拥有能够轻松维护自己的基础设施的工程人员的网站,自行管理的 CDN 是一个不错的选择。
- Thumbor 是最受欢迎的自行管理图片 CDN。它是开源的,可免费使用,但功能比大多数商业 CDN 少,并且其文档有些局限。使用 thumbor 的网站包括维基百科、Square 和 99designs。如需了解如何设置 Thumbor 图片 CDN,请参阅如何安装 Thumbor 图片 CDN。
- Imaginary
- Imagor
第三方图片 CDN
第三方图片 CDN 以服务的形式提供图片 CDN。就像云服务提供商提供服务器和其他基础设施需要收费一样,图片 CDN 提供图片优化和传送服务也需要收费。由于第三方图片 CDN 维护底层技术,因此您通常可以很快开始使用,但大型网站的完整迁移可能需要更长时间。第三方图片 CDN 通常根据使用层级定价,大多数图片 CDN 都提供免费层级或免费试用,以便您试用其产品。
选择图片 CDN
图片 CDN 有许多不错的选择。有些工具的功能比其他工具多,但它们都可以帮助您节省图片字节,从而加快网页加载速度。除了功能集之外,选择图片 CDN 时要考虑的其他因素还包括费用、支持、文档以及设置或迁移的难易程度。
对 Largest Contentful Paint (LCP) 的影响
图片是许多网站用户体验的重要组成部分,因此也是网站 Largest Contentful Paint 的重要因素。如果您决定使用图片 CDN,请注意以下几点:
- 从 CDN 传送的图片可能来自跨域服务器,这可能会增加网站的连接设置时间。尽可能尝试使用通过主源代理的图片 CDN,这样您就不会添加额外的源供浏览器连接。这与在主源上自行托管图片的效果相同。
- 考虑在 LCP 图片元素上使用
fetchpriority属性值"high",以便浏览器可以尽快开始加载该图片。 - 如果图片无法在初始 HTML 中立即被发现,请考虑为 LCP 候选图片使用
rel=preload提示,以便浏览器可以提前加载该图片。 - 如果您无法通过源站进行代理,并且浏览器在网页加载后期才能知道要加载哪张图片,请尽早设置与跨域图片 CDN 的连接,以缩短潜在 LCP 候选图片的资源加载阶段。