使缓存内容失效

本页面介绍如何使 Cloud CDN 缓存的内容失效。

例如,如果位于 /images/file.jpg 的文件已缓存且需要设为失效,您可以使用多种方法使其失效,具体取决于您是想将影响局限于该文件还是扩大到更大的范围。在每种情况下,您都可以为所有主机名或仅为一个主机名执行失效操作。

如需详细了解缓存失效操作,请参阅缓存失效操作概览

准备工作

您可以使用 Google Cloud CLI 或 Google Cloud 控制台来执行失效操作。

您可以通过以下两种方式访问 Google Cloud CLI:

如需创建具有所需权限的自定义角色,请参阅创建和管理自定义角色

如需添加预定义角色,请使用 IAM 快速入门

仅使一个文件失效

控制台

  1. 在 Google Cloud 控制台中,转到 Cloud CDN 页面。

    转到 Cloud CDN 页面

  2. 关联的负载均衡器下,点击负载均衡器名称。
  3. 点击缓存失效操作标签页。
  4. 输入文件的路径。
    • 如果要对所有主机名执行路径失效操作,请仅输入该路径(例如:/images/file.jpg)。
    • 如果要仅对一个主机名执行路径失效操作,请将主机名指定为该路径的一部分(例如:host1.com/images/file.jpg)。
  5. 点击失效

gcloud

使用 gcloud compute url-maps invalidate-cdn-cache 命令

如需仅指定一个要失效的文件,请将 --path 标志与文件名一起使用。

gcloud compute url-maps invalidate-cdn-cache URL_MAP_NAME \
    --path "/images/file.jpg"

URL_MAP_NAME 替换为网址映射的名称。如需列出网址映射,请使用 gcloud compute url-maps list 命令。

如需仅为一台主机执行失效操作,请添加 --host 标志,例如 --host host1.com

gcloud compute url-maps invalidate-cdn-cache URL_MAP_NAME \
    --host host1.com \
    --path "/images/file.jpg"

默认情况下,Google Cloud CLI 会等到失效操作完成。要在后台执行失效操作,请在命令行中附加 --async

API

使用 urlMaps.invalidateCache 方法 API 调用。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/urlMaps/URL_MAP_NAME/invalidateCache

替换以下内容:

  • PROJECT_ID:您的 Google Cloud 控制台项目 ID
  • URL_MAP_NAME:网址映射的名称

如需指定要失效的文件,请使用以下 JSON 请求正文示例:

{
  "path": "/images/file.jpg"
}

如需仅为一个主机使文件失效,请使用以下 JSON 请求正文示例:

{
  "host": "host1.com",
  "path": "/images/file.jpg"
}

使整个目录失效

控制台

  1. 在 Google Cloud 控制台中,转到 Cloud CDN 页面。

    转到 Cloud CDN 页面

  2. 关联的负载均衡器下,点击负载均衡器名称。
  3. 点击缓存失效操作标签页。
  4. 输入目录路径和通配符 (/path/to/file/*)。
    • 如果要对所有主机名执行整个目录的失效操作,请仅输入路径和通配符(例如:/images/*)。
    • 如果要仅对一个主机名执行整个目录的失效操作,请将主机名指定为该路径的一部分(例如:host1.com/images/*)。
  5. 点击失效

gcloud

使用 gcloud compute url-maps invalidate-cdn-cache 命令

gcloud compute url-maps invalidate-cdn-cache URL_MAP_NAME \
    --path "/images/*"

URL_MAP_NAME 替换为网址映射的名称。

如需仅为一台主机执行失效操作,请添加 --host 标志,例如 --host host1.com

gcloud compute url-maps invalidate-cdn-cache URL_MAP_NAME \
    --host host1.com \
    --path "/images/*"

API

使用 urlMaps.invalidateCache 方法 API 调用。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/urlMaps/URL_MAP_NAME/invalidateCache

替换以下内容:

  • PROJECT_ID:您的 Google Cloud 控制台项目 ID
  • URL_MAP_NAME:网址映射的名称

如需指定要失效的文件夹,请使用以下 JSON 请求正文示例:

{
  "path": "/images/*"
}

如需仅为一个主机使目录失效,请使用以下 JSON 请求正文示例:

{
  "host": "host1.com",
  "path": "/images/*"
}

根据缓存标记使缓存失效

控制台

Google Cloud 控制台不支持使用缓存标记进行失效。

gcloud

使用 gcloud beta compute url-maps invalidate-cdn-cache 命令

gcloud beta compute url-maps invalidate-cdn-cache URL_MAP_NAME \
    --tags=TAGS

替换以下内容:

  • URL_MAP_NAME:网址映射的名称
  • TAGS:一个代码或以英文逗号分隔的代码列表;或者,您最多可以指定 10 次此标志

例如,如果后端响应包含包含不透明用户 ID(例如 UUID4 或其他形式的 GUID)的 Cache-Tag 标头,您可以使用 tag 标志使特定用户的所有内容失效。此外,如需仅为一台主机(例如您的预演环境)失效内容,请添加 --host 标志。

gcloud beta compute url-maps invalidate-cdn-cache url_map_1 \
    --tags="1115b8f4-f804-4861-9629-8cb9aecdeeb3" \
    --host="host1.com"

API

使用 urlMaps.invalidateCache 方法 API 调用。

POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/global/urlMaps/URL_MAP_NAME/invalidateCache

替换以下内容:

  • PROJECT_ID:您的 Google Cloud 控制台项目 ID
  • URL_MAP_NAME:网址映射的名称

如需指定要失效的缓存标记,请使用以下 JSON 请求正文示例:

{
  "tags": "tag1,tag2"
}

您可以指定单个标记,也可以指定以逗号分隔的标记列表。

如需仅针对一个主机按缓存标记失效,请使用以下 JSON 请求正文示例:

{
  "host": "host1.com",
  "path": "tag1,tag2"
}

使所有内容失效

控制台

  1. 在 Google Cloud 控制台中,转到 Cloud CDN 页面。

    转到 Cloud CDN 页面

  2. 关联的负载均衡器下,点击负载均衡器名称。
  3. 点击缓存失效操作标签页。
  4. 只输入根和通配符 (/*)。
    • 如果要对所有主机名执行全部内容的失效操作,请仅在字段中输入 /*
    • 如果要仅对一个主机名执行全部内容的失效操作,请将主机名指定为该路径的一部分(例如:host1.com/*)。
  5. 点击失效

gcloud

使用 gcloud compute url-maps invalidate-cdn-cache 命令

gcloud compute url-maps invalidate-cdn-cache URL_MAP_NAME \
    --path "/*"

替换以下内容:

  • URL_MAP_NAME:网址映射的名称
  • /*:您希望使其失效的网址路径;请勿包含主机名;路径可以使用明确的文件名或通配符

如需仅为一台主机执行失效操作,请添加 --host 标志,例如 --host host1.com

gcloud compute url-maps invalidate-cdn-cache URL_MAP_NAME \
    --host host1.com \
    --path "/*"

API

使用 urlMaps.invalidateCache 方法 API 调用。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/urlMaps/URL_MAP_NAME/invalidateCache

替换以下内容:

  • PROJECT_ID:您的 Google Cloud 控制台项目 ID
  • URL_MAP_NAME:网址映射的名称

如需指定要失效的网址路径,请使用以下 JSON 请求正文示例:

{
  "path": "/*"
}

如需仅使一个主机的网址路径失效,请使用以下 JSON 请求正文示例:

{
  "host": "host1.com",
  "path": "/*"
}

查看失效请求的状态

Cloud CDN 会针对每个失效操作发出两行日志,一行在接受失效操作时,另一行在失效操作完成时。第一个包含主机和路径信息。

如需查看失效请求的状态或查找最近提交的请求的确切列表,您可以使用 Cloud Logging 或 Cloud Monitoring。

以下是使用日志记录的示例命令:

gcloud logging read 'protoPayload.methodName="v1.compute.urlMaps.invalidateCache"' \
    --limit=10

以下是使用“监控”功能的查询示例:

protoPayload.serviceName="compute.googleapis.com"
protoPayload.methodName="v1.compute.urlMaps.invalidateCache"

后续步骤

  • 如需检查 Cloud CDN 是否正在从缓存传送响应,请参阅查看日志
  • 如需了解哪些内容可缓存或不可缓存,请参阅缓存概览