本页面介绍如何使 Cloud CDN 缓存的内容失效。
例如,如果位于 /images/file.jpg
的文件已缓存且需要设为失效,您可以使用多种方法使其失效,具体取决于您是想将影响局限于该文件还是扩大到更大的范围。在每种情况下,您都可以为所有主机名或仅为一个主机名执行失效操作。
如需详细了解缓存失效操作,请参阅缓存失效操作概览。
准备工作
您可以使用 Google Cloud CLI 或 Google Cloud 控制台来执行失效操作。
您可以通过以下两种方式访问 Google Cloud CLI:
按照使用
apt-get
安装中的说明安装 Google Cloud CLI。如果您之前未使用过 Google Cloud CLI,请先运行gcloud init
进行身份验证。使用 Cloud Shell(已预装
gcloud
)。
如需创建具有所需权限的自定义角色,请参阅创建和管理自定义角色。
如需添加预定义角色,请使用 IAM 快速入门。
仅使一个文件失效
控制台
- 在 Google Cloud 控制台中,转到 Cloud CDN 页面。
- 在关联的负载均衡器下,点击负载均衡器名称。
- 点击缓存失效操作标签页。
- 输入文件的路径。
- 如果要对所有主机名执行路径失效操作,请仅输入该路径(例如:
/images/file.jpg
)。 - 如果要仅对一个主机名执行路径失效操作,请将主机名指定为该路径的一部分(例如:
host1.com/images/file.jpg
)。
- 如果要对所有主机名执行路径失效操作,请仅输入该路径(例如:
- 点击失效。
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 控制台项目 IDURL_MAP_NAME
:网址映射的名称
如需指定要失效的文件,请使用以下 JSON 请求正文示例:
{ "path": "/images/file.jpg" }
如需仅为一个主机使文件失效,请使用以下 JSON 请求正文示例:
{ "host": "host1.com", "path": "/images/file.jpg" }
使整个目录失效
控制台
- 在 Google Cloud 控制台中,转到 Cloud CDN 页面。
- 在关联的负载均衡器下,点击负载均衡器名称。
- 点击缓存失效操作标签页。
- 输入目录路径和通配符 (
/path/to/file/*
)。- 如果要对所有主机名执行整个目录的失效操作,请仅输入路径和通配符(例如:
/images/*
)。 - 如果要仅对一个主机名执行整个目录的失效操作,请将主机名指定为该路径的一部分(例如:
host1.com/images/*
)。
- 如果要对所有主机名执行整个目录的失效操作,请仅输入路径和通配符(例如:
- 点击失效。
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 控制台项目 IDURL_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 控制台项目 IDURL_MAP_NAME
:网址映射的名称
如需指定要失效的缓存标记,请使用以下 JSON 请求正文示例:
{ "tags": "tag1,tag2" }
您可以指定单个标记,也可以指定以逗号分隔的标记列表。
如需仅针对一个主机按缓存标记失效,请使用以下 JSON 请求正文示例:
{ "host": "host1.com", "path": "tag1,tag2" }
使所有内容失效
控制台
- 在 Google Cloud 控制台中,转到 Cloud CDN 页面。
- 在关联的负载均衡器下,点击负载均衡器名称。
- 点击缓存失效操作标签页。
- 只输入根和通配符 (
/*
)。- 如果要对所有主机名执行全部内容的失效操作,请仅在字段中输入
/*
。 - 如果要仅对一个主机名执行全部内容的失效操作,请将主机名指定为该路径的一部分(例如:
host1.com/*
)。
- 如果要对所有主机名执行全部内容的失效操作,请仅在字段中输入
- 点击失效。
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 控制台项目 IDURL_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"