使缓存内容失效

缓存失效操作(有时称为“缓存完全清除”)是 声明缓存内容无效。这会导致该条目 从缓存中删除,并在下次从源服务器重新填充 请求的内容

媒体 CDN 支持多种方式来选择要播放的内容 无效,如下所示:

  • 主机和网址路径
  • 网址前缀(通配符)
  • 缓存标记,包括 statusorigincontent-type

您可以组合这些失效参数,以定位已缓存的特定 并尽可能减少后续缓存填充时的源站负载。

支持的失效操作语法

支持的失效操作语法如下:

类型 语法 示例
主机失效 使指定主机的缓存响应失效。 gcloud edge-cache services invalidate-cache SERVICE_NAME \
    --host="media.example.com"
路径失效 使指定路径或路径前缀的缓存响应失效。 gcloud edge-cache services invalidate-cache SERVICE_NAME \
    --path="/content/1234/hls/*"

gcloud edge-cache services invalidate-cache SERVICE_NAME \
    --path="/videos/funny.mp4"
针对 HTTP 状态代码、源名称或 MIME 类型缓存标记失效 使用匹配的标记使缓存的响应失效。多个代码 被视为布尔值 OR gcloud edge-cache services invalidate-cache SERVICE_NAME \
    --tags="status=404,origin=staging-origin"

gcloud edge-cache services invalidate-cache SERVICE_NAME \
    --tags="content-type=application/x-mpegurl"

注意:

  • 在一个失效请求中,最多可以指定 10 个缓存标记。
  • 您可以组合使用 hostpathtags 。系统会将它们视为布尔值 AND
  • 如果指定了多个缓存标记,它们将被视为布尔值 OR。对于 例如,如果您指定 --tags="status=404,origin=staging-origin", 缓存标记为 status=404所有响应都会失效, 以及缓存标记为 origin=staging-origin所有响应。

缓存标记

通过缓存标记(或代理键),您可以根据以下情况使内容失效 任意元数据。

这些标记由以下内容定义:

  • 使用标记在源响应中设置 Cache-Tag HTTP 标头 以逗号分隔的值列表的形式指定。
  • 基于响应的 HTTP 状态代码、MIME 类型的内置标记 Content-Type HTTP 响应标头或 响应的提取源。

如果在单个失效请求中指定多个标记,这些标记将 被视为布尔值 OR

请思考以下示例:

  • 您拥有以下缓存对象:

    • 包含标记 status=200 的缓存对象 1 content-type=video/mp4
    • 包含标记 status=404 的缓存对象 2 content-type=text/plain
    • 包含标记 status=200 的缓存对象 3 content-type=application/x-mpegurl
  • 您可以发出一个 tags="status=200,content-type=text/plain"

  • 输出:所有三个缓存对象同时失效。这是为了 这样就不必指定所有可能的代码组合 未知。

注意:

  • 默认缓存标记不会包含在面向客户端的响应中,因为 它们可以反映现有标题(如状态行或 Content-Type)或内部配置详细信息。
  • Cache-Tag HTTP 响应标头中由源站发送的缓存标记 发送给客户端如果您想阻止系统将这些信息发送到 对 routeRule 使用 responseHeadersToRemove 功能来移除 Cache-Tag 标头。如需查看示例,请参阅 自定义标头 文档。

内置代码

响应会自动应用以下缓存标记,以支持 根据状态代码、MIME 类型或 内容提取自哪个网域。您无需在源中指定这些标记 响应。

标记 详细信息
status=HTTP_STATUS_CODE

status 缓存标记根据返回的 HTTP 进行设置 缓存响应的状态代码。

例如,您可以通过以下方法使所有缓存的 HTTP 404 响应失效: 在失效请求中指定 status=404

content-type=MIME_TYPE

content-type 缓存标记根据 MIME 类型进行设置 (在 内容类型 HTTP 响应标头。

例如,HLS 播放列表的 MIME 类型为 application/x-mpegURLvnd.apple.mpegURL

这样,您就可以让特定类型的内容失效。

origin=ORIGIN_NAME

origin 缓存标记根据来源的名称进行设置 内容提取来源

origin 值引用 .routing.routeRules[].origin 的值, 将因配置有误或行为可能异常而导致的内容失效 源服务器。

缓存标记限制

缓存标记具有以下限制:

  • 每个标记不得超过 120 个字节
  • 每个缓存对象的代码名称总数不得超过 1KiB(1024 字节)
  • 每个对象不得超过 10 个代码(不包括由以下人员添加的默认代码) 媒体 CDN
  • 必须是 HTTP RFC 7230 第 3.2.6 节中定义的有效的 HTTP 令牌名称
  • 不得包含内置的 status=origin=content-type= 前缀(会被忽略)。

不在这些限制或满足要求的代码将 已忽略。在某些情况下(例如,响应标头过大时), 响应失败,不会被缓存。

权限

networkservices.EdgeCacheServices.invalidateCache 权限用于控制对 invalidateCache API 的访问权限。 networkservices.edgeCacheAdminnetworkservices.edgeCacheUser 个 Identity and Access Management 角色。

示例

以下示例展示了如何使已缓存的响应失效 媒体 CDN 服务。

您可以将 hostpathtags 结合使用, 字段来使一组特定内容失效。

由主机失效

控制台

  1. 转到 Google Cloud 控制台中的“媒体 CDN”页面。
    转到媒体 CDN
  2. 点击 Services(服务)标签。
  3. 点击您的服务。
  4. 点击缓存失效操作标签页。
  5. 如需使路径模式失效,请输入主机名,后跟路径。 例如:media.example.com/catsmedia.example.com/cat*。 主机名不能包含 *

gcloud

gcloud edge-cache services invalidate-cache SERVICE_NAME \
    --host=HOST

替换以下内容:

  • SERVICE_NAME 替换为 边缘缓存服务。
  • HOST 替换为 来使缓存条目失效。

例如:

gcloud edge-cache services invalidate-cache SERVICE_NAME \
    --host="media.example.com"

按路径失效

控制台

  1. 转到 Google Cloud 控制台中的“媒体 CDN”页面。
    转到媒体 CDN
  2. 点击 Services(服务)标签。
  3. 点击您的服务。
  4. 点击缓存失效操作标签页。
  5. 对于要使之失效的路径模式,请输入路径。 例如:/videos/funny.mp4/segments/e94a6b1f731/*

gcloud

gcloud edge-cache services invalidate-cache SERVICE_NAME \
    --path=PREFIX

替换以下内容:

  • SERVICE_NAME 替换为 边缘缓存服务。
  • HOST 替换为 来使缓存条目失效。如需匹配任何主机名,请省略主机 标志。
  • 路径前缀以“*”结尾的 PREFIX那个 匹配要失效的缓存条目。

例如:

gcloud edge-cache services invalidate-cache SERVICE_NAME \
    --path="/segments/e94a6b1f731/*"

您还可以通过省略尾随 * 来使确切路径失效 字符。传递 --path="/videos/funny.mp4" 会使 与该路径匹配的已缓存响应(如果有)。

通过缓存标记失效

控制台

Google Cloud 控制台不支持通过缓存标记失效。

gcloud

gcloud edge-cache services invalidate-cache SERVICE_NAME \
    --tags=TAGS

替换以下内容:

  • SERVICE_NAME 替换为 边缘缓存服务。
  • TAGS 替换为以英文逗号分隔的标记列表。

例如:

gcloud edge-cache services invalidate-cache SERVICE_NAME \
    --tags="status=404,content-type=text/plain"

失效延迟时间

在媒体 CDN 的数千个位置执行缓存失效操作 通常在一分钟内即可完成

在某些情况下,失效操作可能需要更长时间,具体取决于系统负载, 以及失效内容的数量。

日志记录

如果启用了审核日志,则失效调用会记录到 Cloud Logging。

限制

失效操作的速率受限。如果您超过了失效率上限, 您收到状态为“RESOURCE_EXHAUSTED”的 HTTP 429 错误消息。

失效操作的大小不限。例如, /images/my-image.png 计为 1 次失效操作。失效 /images/* 也计为一次失效操作。

此行为不同于 Cloud CDN。 Cloud CDN 支持每分钟执行一次失效操作。