【发布时间】:2020-08-27 06:15:51
【问题描述】:
我刚开始使用 google cloud cdn,从我公司的 aws 迁移过来。
在 aws 中,我们可以使用 ssl(使用 CloudFront)通过 s3 为静态站点提供服务。但是,当我更新 s3 时,我也需要在云端更新我的发行版。
在 GCP 中,我已经设置了负载均衡器,其中包括指向我的云存储的云 CDN。但是我看不到刷新分发的选项。如果我在云存储中更新我的网站,如何刷新我的 cdn?
【问题讨论】:
我刚开始使用 google cloud cdn,从我公司的 aws 迁移过来。
在 aws 中,我们可以使用 ssl(使用 CloudFront)通过 s3 为静态站点提供服务。但是,当我更新 s3 时,我也需要在云端更新我的发行版。
在 GCP 中,我已经设置了负载均衡器,其中包括指向我的云存储的云 CDN。但是我看不到刷新分发的选项。如果我在云存储中更新我的网站,如何刷新我的 cdn?
【问题讨论】:
无法在 GCP 中手动启动 CDN 缓存更新。
不过,您可以使用versioned URLs 向用户提供更新的内容;
版本控制内容提供相同内容的不同版本, 通过在缓存之前向用户显示新内容来有效地删除它 条目过期。因为版本控制是免费且易于使用的,所以我们 建议您使用版本控制作为更新的默认方法 可缓存的内容。
您还可以通过max-age 值 (expiration time) 来影响内容更新频率的变化,Cache Control in GCP buckets 上的更多信息。
请注意,如果您允许缓存,在下载时您可能会看到较旧的 上传更新的替换对象后的对象版本。笔记 也因为对象可以缓存在不同的地方 互联网没有办法强制缓存对象全局过期 (与您可以强制浏览器刷新其缓存的方式不同)。如果 您想阻止提供公开可读的缓存版本 对象,在对象上设置“Cache-Control:no-cache, max-age=0”。
你也可以change caching settings on already uploaded data 和gcloud。
【讨论】:
这在 Google Cloud Console 和 gcloud 命令行工具中都是可能的。[1]
您可以使单个页面无效:
gcloud compute url-maps invalidate-cdn-cache LOAD_BALANCER_NAME \
--host HOSTNAME \
--path "/images/file.jpg"
您可以使目录无效:
gcloud compute url-maps invalidate-cdn-cache LOAD_BALANCER_NAME \
--host HOSTNAME \
--path "/images/*"
或者您可以使所有内容无效:
gcloud compute url-maps invalidate-cdn-cache LOAD_BALANCER_NAME \
--host HOSTNAME \
--path "/*"
在所有情况下,如果您希望将 --host 参数应用于所有主机,您都可以排除它。
[1]https://cloud.google.com/cdn/docs/invalidating-cached-content
【讨论】: