本页面介绍了 Cloud Storage 内置缓存。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
,指明不得为后续请求在任何缓存中缓存该对象。
后续步骤
- 详细了解
Cache-Control
元数据。 - 详细了解 RFC
Cache-Control
指令。