本页面介绍了如何将缓存模式与 Cloud CDN 结合使用。您可通过缓存模式配置 Cloud CDN 缓存内容的方式。
准备工作
了解缓存模式和静态内容。
确保已启用 Cloud CDN;如需了解相关说明,请参阅使用 Cloud CDN。
如有必要,请更新到 Cloud SDK 的最新版本:
gcloud components update
设置缓存模式
Cloud CDN 提供三种缓存模式,其中定义了响应的缓存方式、Cloud CDN 是否遵循源站发送的缓存指令,以及缓存 TTL 的应用方式。
下表显示了可用的缓存模式:
缓存模式 | 行为 |
---|---|
USE_ORIGIN_HEADERS |
要求源站响应设置有效的缓存指令和有效的缓存标头。没有这些指令的响应会从源站进行转发。 对于使用 |
CACHE_ALL_STATIC |
自动缓存不包含 no-store 、private 或 no-cache 指令的静态内容。设置有效缓存指令的源站响应也会进行缓存。 |
FORCE_CACHE_ALL |
无条件缓存响应,并跳过源站设置的任何缓存指令。如果使用配置了此模式的共享后端,请确保不要缓存每个用户的专用内容(例如动态 HTML 或 API 响应)。 |
如需为已启用 Cloud CDN 的后端配置缓存模式,请执行以下操作:
控制台
- 在 Google Cloud Console 中,转到负载平衡页面。
- 点击外部 HTTP(S) 负载平衡器的名称。
- 点击修改 。
- 在后端配置中,选择一个后端,然后点击修改 。
- 确保选择启用 Cloud CDN。
- 在缓存模式下,选择以下选项之一:
- 点击保存。
gcloud
对于后端服务,请使用带有 --cache-mode
标志的 gcloud compute backend-services
create
或 gcloud compute backend-services
update
命令。
对于后端存储分区,请使用带有 --cache-mode
标志的 gcloud compute backend-buckets
create
或 gcloud compute backend-buckets
update
命令。
gcloud compute backend-services (create | update) BACKEND_SERVICE_NAME --cache-mode=CACHE_MODE
gcloud compute backend-buckets (create | update) BACKEND_BUCKET_NAME --cache-mode=CACHE_MODE
将 CACHE_MODE
替换为以下项之一:
CACHE_ALL_STATIC
:自动缓存静态内容。标记为不可缓存的响应(Cache-Control
响应标头中的private
、no-store
或no-cache
指令)不会被缓存。为了缓存动态内容,内容必须具有有效的缓存标头。USE_ORIGIN_HEADERS
:要求源站设置有效缓存标头以缓存内容。不带这些标头的响应不会在 Google 边缘缓存,且需要根据每个请求完成访问源站的完整行程,这可能会影响源服务器性能并增加其负载。对于使用gcloud
命令行工具或 REST API 创建的已启用 Cloud CDN 的后端,这是默认行为。FORCE_CACHE_ALL
:缓存所有内容,并忽略Cache-Control
响应标头中的任何private
、no-store
或no-cache
指令。这可能导致缓存特定于每位用户的(可识别用户个人身份信息的)非公开内容。请仅在不会提供非公开内容或动态内容的后端(比如 Cloud Storage 存储分区)中启用此项设置。请勿在提供专用或动态内容的后端中启用此功能。
API
对于后端存储分区,请使用 Method: backendBuckets.insert
或 Method: backendBuckets.update
API 调用。
对于后端服务,请使用 Method: backendServices.insert
或 Method: backendServices.update
API 调用。
使用以下 API 调用之一:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/BACKEND_BUCKET POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE
将以下代码段添加到 JSON 请求正文:
"cdnPolicy": { "cacheMode": (CACHE_ALL_STATIC | USE_ORIGIN_HEADERS | FORCE_CACHE_ALL)
将 CACHE_MODE
替换为以下项之一:
CACHE_ALL_STATIC
(默认):自动缓存静态内容。标记为不可缓存的响应(Cache-Control
响应标头中的private
、no-store
或no-cache
指令)不会被缓存。为了缓存动态内容,内容必须具有有效的缓存标头。USE_ORIGIN_HEADERS
:要求源站设置有效缓存标头以缓存内容。不带这些标头的响应不会在 Google 边缘缓存,且需要根据每个请求完成访问源站的完整行程,这可能会影响源服务器性能并增加其负载。对于使用gcloud
命令行工具或 REST API 创建的已启用 Cloud CDN 的后端,这是默认行为。FORCE_CACHE_ALL
:缓存所有内容,并忽略Cache-Control
响应标头中的任何private
、no-store
或no-cache
指令。这可能导致缓存特定于每位用户的(可识别用户个人身份信息的)非公开内容。您应仅在不会提供非公开内容或动态内容的后端(比如 Cloud Storage 存储分区)中启用此项设置。