图片优化使用场景

本页面提供了高级图片处理行为、流水线排序效果和自动图片归一化规则的示例。

转换顺序

imop 查询参数字符串中的运算会按从左到右的顺序依次运行,但 metadatascale 会先运行,而 canvas 会最后运行。由于每个运算都会直接作用于前一个运算的视觉输出,因此参数的顺序会影响衍生图片的最终视觉质量和细节保留。

假设源图片的尺寸为 1,000 像素(宽)x 1,000 像素(高):

示例:Resize,再 Crop

https://www.example.com/image.jpg?imop=Resize,width=200;Crop,left=0.5

  1. Resize:原始 1000×1000 像素的图片会调整为 200×200 像素 (保持 1:1 的宽高比)。

  2. 裁剪left=0.5 运算会裁剪已调整大小的图片的左半部分。

结果:一张 100 x 200 像素 的图片,表示内容的右 50%。

示例:先 Crop,再 Resize

https://www.example.com/image.jpg?imop=Crop,left=0.5;Resize,width=200

  1. 裁剪left=0.5运算会先提取 高分辨率源图片的右 50%,从而创建500 x 1000 px 中间图片(将宽高比更改为 1:2)。

  2. 调整大小width=200 参数会调整此中间图片的大小。 为了保留新的 1:2 宽高比,高度会缩放为 400 像素

结果:一张 200 * 400 像素 的最终图片。

拉伸和纵向扩充行为

默认情况下,图片优化服务会强制执行严格的仅缩小策略,以节省边缘传送带宽并保护视觉质量。如果您请求的尺寸大于原始图片,Cloud CDN 会忽略放大操作,并以原始尺寸输出图片。

如需替换此行为并强制资源纵向扩充,您必须明确声明 stretch 值。

纵向扩充的验证要求

  • 双尺寸规则:只有在 Resize 运算中明确 提供 widthheight 参数时,才允许使用 stretch

  • 单尺寸限制:如果您在仅定义 单个尺寸(例如 widthheight)时添加 scaling=stretch,图片优化 服务会拒绝整个请求。

例如,

有效请求: ?imop=resize,width=500,height=500,scaling=stretch

无效请求: ?imop=resize,width=500, scaling=stretch

缓存和缓存失效

当您更新源服务器上的原始图片时,必须使缓存的版本失效,以确保 Cloud CDN 检索并传送更新后的资源。

缓存行为

附加到图片网址的每个转换参数的唯一组合都会在边缘创建单独的缓存条目。为了优化缓存命中率,请避免创建过多的唯一参数变体。 例如,单像素更改。

Cloud CDN 会对缓存键进行归一化,以将相同的转换参数分组,而不考虑它们在查询字符串中的顺序。

失效行为

当您更新源服务器上的原始图片时,只需为基本图片网址提交一个失效请求。增强型 Cloud CDN 会自动在全球范围内清除缓存的原始图片及其所有自动生成的变体(例如 WebP 或优化版本)。

变体失效的工作原理

当您使用与基本图片网址匹配的路径模式(例如 /images/my-picture.jpg)发出缓存失效请求时,Cloud CDN 会自动识别并清除:

  • 缓存的原始源图片。

  • 之前生成的所有变体

您可以使用以下方式应用 Cloud CDN 缓存失效:

  • Google Google Cloud 控制台:依次前往“网络服务”> Cloud CDN, 选择来源,然后转到“缓存失效”标签页。 或者,依次前往“网络服务”>“负载均衡”,选择负载均衡器,然后使用缓存失效 标签页。

  • Google Cloud CLI:使用 Google Cloud CLI compute url-maps invalidate-cdn-cache 命令。

  • 缓存标记:建议使用缓存标记来管理优化后的图片。这样,您就可以发出针对特定标记的失效请求,从而清除与其关联的内容,以便进行更精细的控制。

例如:

如需在全球范围内使 /images/my-picture.jpg 及其所有优化变体失效,请执行以下操作:

  • 路径:指定确切路径 /images/my-picture.jpg

  • 主机(可选):如果您只想清除特定网域的图片,请指定主机。

提交后,此单一操作会从全球边缘缓存中移除图片的所有优化版本,确保用户在下次请求时立即收到更新后的版本。

EXIF 中的颜色配置文件和图片方向(归一化)

现代智能手机和数码相机通常会保存具有原始、未旋转像素网格的图片,并依赖于嵌入式 EXIF 方向标记来指示查看设备旋转图片。例如,纵向方向顺时针旋转 90 度。同样,嵌入式 ICC 颜色配置文件定义了颜色在不同显示器上的显示方式。

为了确保运算的可预测性,图片优化边缘流水线会在运行任何转换之前自动对图片进行归一化。

归一化过程

  • 在执行转换之前,边缘引擎会读取 EXIF 方向标记和 ICC 颜色配置文件元数据,并将其物理应用到像素网格。这有助于确保后续 cropresize 参数的坐标可预测性。

  • cropresizescale 等运算会针对真实的视觉尺寸正确执行,以防止出现视觉错误。

  • 在对核心像素进行调整后,边缘引擎会从文件中移除所有非必要的元数据,以最大限度地节省大小。默认情况下,它会保留 copyright,除非在元数据运算中请求特定值。

后续步骤