本页面介绍您可以使用的控制 Cloud Storage 对象的缓存方式的选项。本页面重点介绍 Cloud Storage 内置缓存和 Cloud CDN,但 Cloud Storage 也与第三方 CDN 兼容。
概览
当 Cloud Storage 对象被缓存时,该对象数据的副本会存储在 Google 或互联网缓存中,以便在将来进行请求时更快地传送对象。虽然缓存可以提高性能,但如果您对对象进行了更新,但缓存继续传送早期版本的对象,那么就存在传送过时内容的风险。
Cloud Storage 的内置缓存
Cloud Storage 的行为类似于内容分发网络 (CDN),您无需承担任何工作,因为如果对象的 Cache-Control
元数据设置为允许缓存,并且满足以下条件,则对象的数据会缓存在 Cloud Storage 网络中:
- 对象可公开访问。
- 对象未存储在已启用请求者付款的存储桶中,并且不位于 Virtual Private Cloud 服务边界内。
- 对象未使用客户管理的加密密钥或客户提供的加密密钥进行加密。
Cloud Storage 遵循 Cache-Control
的标准值,例如:
public
:对象可以缓存。private
:Cloud Storage 不会缓存该对象,但可以将其缓存到请求者的本地缓存中。no-cache
:对象可以缓存,但除非先通过 Cloud Storage 验证,否则不能用于满足未来的请求。no-store
:对象无法缓存。max-age=TIME_IN_SECONDS
:对象在被视为过时之前可缓存的时长。您可以将max-age
设置为任意时长。系统不会从缓存传送过时的对象,特殊情况下除外。
如需为对象设置 Cache-Control
元数据,请参阅修改对象元数据。
IAM 拒绝政策的内置缓存行为
当存在限制从主账号标识符 allUsers
读取某个对象的权限的组织级 IAM 拒绝政策时,即使存在向 allUsers
授予该对象的读取权限的存储桶级 IAM 政策,该对象的内置缓存也会被禁用。但是,如果 IAM 拒绝政策仅限制各个用户,则对象仍会启用内置缓存。
性能考虑因素
可公开缓存的对象的性能要好得多。如果您使用一个对象来控制许多客户端,并因此想停用缓存来提供最新的数据,可进行如下设置:
改为考虑将对象的
Cache-Control
元数据设置为public
,并将max-age
设置为 15-60 秒。大多数应用可以容忍对象过期几秒钟,以换取性能的提升。为对象使用
Cache-Control: no-store
,指明不得为后续请求在任何缓存中缓存该对象。
将 Cloud Storage 与 Cloud CDN 搭配使用
为了在向用户分发内容时获得最佳性能,我们建议将 Cloud Storage 与 Cloud CDN 搭配使用。
如需使用 Cloud CDN,您必须将外部应用负载均衡器与 Cloud Storage 存储桶配合使用以作为后端。如需查看使用 Cloud Storage 存储桶设置 HTTP(S) 负载均衡器的教程,请参阅托管静态网站。
Cloud CDN 缓存模式允许您对所有对象应用统一缓存配置。Cloud CDN 使用对象上设置的 Cache-Control
元数据来确定应如何缓存对象,除非您使用缓存模式或 TTL 限制替换 Cache-Control
元数据。
在 Cloud Storage 内置缓存和 Cloud CDN 之间进行选择时,请考虑以下各项:
功能 | Cloud Storage | Cloud CDN |
---|---|---|
可缓存文件大小上限 | 10 MiB | 100 GiB 1 |
默认缓存到期时间 | 1 小时 | 1 小时(可配置) |
支持 HTTPS 上的自定义网域 | 否 | 是 |
缓存失效操作 | 否 | 是 |
1如果源服务器支持字节范围请求,Cloud CDN 的可缓存文件大小上限为 100 GiB。如果源服务器不支持字节范围请求,Cloud CDN 的可缓存文件大小上限为 10 MiB。
价格注意事项
就价格而言,选择 Cloud Storage 内置缓存还是 Cloud CDN 取决于您每月传送的数据量,这决定了产生的网络费用。
如果您每月传送的可缓存数据少于几 GiB,那么使用 Cloud Storage 内置缓存的总费用可能较低。Cloud Storage 缓存产生的网络费用可能高于 Cloud CDN,因为会对缓存对象和未缓存对象收取相同的出站数据传输费用(这意味着您需要支付缓存命中的全部费用)。但是,您只需支付与 Cloud Storage 相关的数据存储和操作使用费,而不是为 Cloud Storage、Cloud CDN 和 Cloud Load Balancing 的组合付费。
如果您经常每月传送 100 GiB 或更多的可缓存数据,或者需要使用每个请求日志记录和自定义标头,那么使用 Cloud CDN 的总费用可能会更低。缓存填充会产生 Cloud Storage 出站数据传输和 Cloud CDN 缓存填充费用,缓存用尽后,将应用 Cloud CDN 网络价格。使用 Cloud CDN 节省的网络费用可能可以抵消与维护外部应用负载均衡器和 Cloud CDN 以及 Cloud Storage 相关的较高的运营费用。
后续步骤
- 详细了解
Cache-Control
元数据。 - 详细了解 RFC
Cache-Control
指令。 - 阅读 Cloud CDN 缓存概览。
- 了解如何创建外部 HTTP(S) 负载均衡器以处理来自 Cloud Storage 存储桶的请求。
- 阅读外部应用负载均衡器和 Cloud CDN 的价格详情。