Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google cloud storage 设置自定义Google存储桶宽最大年龄标头_Google Cloud Storage_Cache Control_Max Age_Google Bucket - Fatal编程技术网

Google cloud storage 设置自定义Google存储桶宽最大年龄标头

Google cloud storage 设置自定义Google存储桶宽最大年龄标头,google-cloud-storage,cache-control,max-age,google-bucket,Google Cloud Storage,Cache Control,Max Age,Google Bucket,尊敬的长者们, 我使用谷歌存储桶来存储我网站的静态内容。我希望将此内容缓存在CDN中,这就是为什么我将bucket设置为public,这导致在默认情况下将https headers Cache control设置为public,并将max age设置为3600。 我想为将来上传到bucket中的所有对象将最大年龄设置为更高的值。 我搜索了很多,但在网上找不到任何解决方案。 如果有任何方法,请指导我。如中所述,访问对象时返回的标题可以设置为修改与其关联的元数据。元数据有两类,一类是固定的,另一类是

尊敬的长者们, 我使用谷歌存储桶来存储我网站的静态内容。我希望将此内容缓存在CDN中,这就是为什么我将bucket设置为public,这导致在默认情况下将https headers Cache control设置为public,并将max age设置为3600。 我想为将来上传到bucket中的所有对象将最大年龄设置为更高的值。 我搜索了很多,但在网上找不到任何解决方案。 如果有任何方法,请指导我。

如中所述,访问对象时返回的标题可以设置为修改与其关联的元数据。元数据有两类,一类是固定的,另一类是自定义的。元数据/头缓存控件是固定键元数据之一

在关于它的部分中,我们说我们可以修改所述头部以修改缓存设置。如果未提供,则该值设置为
公共,最大年龄=3600

使用我的一个公共bucket,我编辑了缓存控件,使其值
public,max age=5000
,并且在请求对象时,头部设置了正确的值。看一看,了解如何修改元数据


如中所述,为了在bucket的未来对象中自动设置正确的标头,可以使用使用的云函数,以便在上载/覆盖对象并更改对象元数据时运行

从google.cloud导入存储
CACHE_CONTROL=“public,最大年龄=3159200”
def set_缓存_控制_专用(数据、上下文):
打印('gs://{}/{}的缓存控制设置为{}'。格式(缓存控制,数据['bucket'],数据['name']))
storage\u client=storage.client()
bucket=存储\客户端。获取\ bucket(数据['bucket'])
blob=bucket.get_blob(数据['name'])
blob.cache\u control=cache\u control
blob.patch()
注意,代码本身与另一个答案几乎相同,但将缓存控制设置为我们决定的新值

此外,此内容还需要
requirements.txt
文件:

google-cloud-storage

我知道可以使用云控制台为每个对象设置这个值。我正在寻找的是一种为每个新的/修改的对象自动修改它的方法。有一种方法可以做到这一点,在这篇文章中解释道[。因为我对编码是新手,所以不能正确地理解它,我也不能在帖子上发表评论要求解释,因为声誉有限。如果你能为我提供指导或得到解释,你会很好。这里也有同样的解释[我应该做什么更改才能将缓存控制设置为公共,最大年龄=3159200???我已经更新了我的答案,解释了更新新对象时应在CF中使用的代码。如果您觉得它仍然不能解决您的问题,请查看并添加注释。非常感谢您的指导。它解决了我的问题problem@Shamsulhassan如果是a您发布的SO问题中的nswer解决了您的问题,希望您接受它,以便与您面临相同问题的人更容易找到它。如果此答案解决了您的问题,请接受它。如果它仍然需要改进,请毫不犹豫地编辑它,并在执行此操作之前对其进行改进。