尊敬的前辈,我正在使用谷歌存储桶来存储我网站的静态内容。我希望将此内容缓存在 CDN 中,这就是我将存储桶公开的原因,这导致默认情况下将 https 标头 Cache-control 设置为 public 和 max-age 设置为 3600。我想为将上传到存储桶中的所有未来对象设置 max-age 为更高的值。我搜索了很多,但在网上找不到任何解决方案。如果有任何方法可以做到这一点,请指导我。
问问题
102 次
1 回答
0
如文档中所述,可以设置访问对象时返回的标头来修改与其关联的元数据。元数据有两类,一类是固定的,另一类是自定义的。元数据/标头 Cache-Control 是固定键元数据之一。
在有关Cache-Control的部分中,据说我们可以修改所述标头以修改缓存设置。如果未提供,则该值设置为public, max-age=3600
。
使用我的一个公共存储桶,我编辑了 Cache-Control 以获得该值public, max-age=5000
,并且在请求对象时,标头设置为正确的值。查看本指南以了解如何修改元数据。
如本答案所述,为了在存储桶的未来对象中自动设置正确的标头,可以使用使用存储触发器 finalize的云函数,以便在对象被上传/覆盖并更改对象的元数据时运行.
from google.cloud import storage
CACHE_CONTROL = "public, max-age=3159200"
def set_cache_control_private(data, context):
print('Setting Cache-Control to {} for: gs://{}/{}'.format(CACHE_CONTROL, data['bucket'], data['name']))
storage_client = storage.Client()
bucket = storage_client.get_bucket(data['bucket'])
blob = bucket.get_blob(data['name'])
blob.cache_control = CACHE_CONTROL
blob.patch()
请注意代码本身与其他答案几乎相同,但将 Cache-Control 设置为我们决定的新值。
此内容还需要该requirements.txt
文件:
google-cloud-storage
于 2020-08-28T09:32:25.730 回答