缓存

本页面介绍了 Cloud Storage 内置缓存。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,指明不得为后续请求在任何缓存中缓存该对象。

后续步骤