缓存

本页面介绍您可以使用的控制 Cloud Storage 对象的缓存方式的选项。本页面重点介绍 Cloud Storage 内置缓存和 Cloud CDN,但 Cloud Storage 也与第三方 CDN 兼容。

概览

当 Cloud Storage 对象被缓存时,该对象数据的副本会存储在 Google 或互联网缓存中,以便在将来进行请求时更快地传送对象。虽然缓存可以提高性能,但如果您对对象进行了更新,但缓存继续传送早期版本的对象,那么就存在传送过时内容的风险。

Cloud Storage 的内置缓存

Cloud Storage 的行为类似于内容分发网络 (CDN),您无需承担任何工作,因为如果对象的 Cache-Control 元数据设置为允许缓存,并且满足以下条件,则对象的数据会缓存在 Cloud Storage 网络中:

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 相关的较高的运营费用。

后续步骤