使缓存内容失效

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

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

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

准备工作

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

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

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

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

仅使一个文件失效

控制台

  1. 在 Google Cloud 控制台中,前往 Cloud CDN 页面。

    转到 Cloud CDN

  2. 点击相应源站。

  3. 点击缓存失效操作标签页。

  4. 关联的负载均衡器部分,选择相应负载均衡器。

  5. 指定要使哪些对象失效下,执行以下操作:

    • 主机部分,除非您想使所有主机名的路径都失效,否则请指定相应主机名。
    • 路径部分,指定相应路径和文件名,例如 /images/file.jpg
  6. 点击失效

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 方法

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. 关联的负载均衡器部分,选择相应负载均衡器。

  5. 指定要使哪些对象失效下,执行以下操作:

    • 主机部分,除非您想使所有主机名的路径都失效,否则请指定相应主机名。
    • 路径部分,指定相应路径及用作通配符的星号,例如 /images/*
  6. 点击失效

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 方法

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/*"
}

按缓存标记执行失效操作

控制台

  1. 在 Google Cloud 控制台中,前往 Cloud CDN 页面。

    转到 Cloud CDN

  2. 点击相应源站。

  3. 点击缓存失效操作标签页。

  4. 关联的负载均衡器部分,选择相应负载均衡器。

  5. 指定要使哪些对象失效下的缓存标记部分,指定要使其失效的一个或多个标记。使用空格或英文逗号分隔各个标记。

  6. 点击失效

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 次

例如,如果后端响应包含 Cache-Tag 标头,其中包含不透明的用户 ID(例如 UUID4 或其他形式的 GUID),您可以使用 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 方法

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 请求正文:

{
  "cacheTags": [
    "tag1",
    "tag2"
  ]
}

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

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

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

使所有内容失效

虽然您可以使所有内容失效,但这样做可能存在风险。在继续之前,请仔细评估您是否确实有此需求。

控制台

  1. 在 Google Cloud 控制台中,前往 Cloud CDN 页面。

    转到 Cloud CDN

  2. 点击相应源站。

  3. 点击缓存失效操作标签页。

  4. 关联的负载均衡器部分,选择相应负载均衡器。

  5. 指定要使哪些对象失效下,执行以下操作:

    • 主机部分,除非您想使所有主机名的路径都失效,否则请指定相应主机名。
    • 路径部分,使用星号即可,例如 /*
  6. 点击失效,然后点击确认,以表明您希望 Cloud CDN 使所有内容失效。

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 方法

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。

控制台

  1. 在 Google Cloud 控制台中,前往 Cloud CDN 页面。

    转到 Cloud CDN

  2. 点击相应源站。

  3. 点击缓存失效操作标签页。

  4. 如需查看失效请求的状态和结果,请点击前往 Cloud Logging

gcloud

以下是使用 Logging 的示例命令:

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

以下是使用 Monitoring 的示例查询:

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

后续步骤

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