Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/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 platform 谷歌云存储传播_Google Cloud Platform_Google Cloud Storage - Fatal编程技术网

Google cloud platform 谷歌云存储传播

Google cloud platform 谷歌云存储传播,google-cloud-platform,google-cloud-storage,Google Cloud Platform,Google Cloud Storage,谷歌云存储中的文件更改需要多长时间才能传播 我遇到了一个非常令人沮丧的问题,我更改了一个文件的内容,然后通过gsutil重新上传,但是更改在几个小时内都没有显示出来。有没有办法强制更改的文件立即传播所有内容 如果我在Google云存储控制台中查看该文件,它会看到新文件,但是如果我点击公共URL,它是一个旧版本,在某些情况下,是两个版本之前的 是否有我没有设置的标题 编辑: 我尝试了gsutil-h“Cache Control:no Cache”cp-a public read MyFile,但没

谷歌云存储中的文件更改需要多长时间才能传播

我遇到了一个非常令人沮丧的问题,我更改了一个文件的内容,然后通过gsutil重新上传,但是更改在几个小时内都没有显示出来。有没有办法强制更改的文件立即传播所有内容

如果我在Google云存储控制台中查看该文件,它会看到新文件,但是如果我点击公共URL,它是一个旧版本,在某些情况下,是两个版本之前的

是否有我没有设置的标题

编辑:

我尝试了
gsutil-h“Cache Control:no Cache”cp-a public read MyFile
,但没有效果,但在新的no Cache版本接管之前,旧文件可能需要过期

我在文件上做了一个卷曲,然后取回这个:

HTTP/1.1 200 OK
Server: HTTP Upload Server Built on Dec 12 2012 15:53:08 (1355356388)
Expires: Fri, 21 Dec 2012 19:58:39 GMT
Date: Fri, 21 Dec 2012 18:58:39 GMT
Last-Modified: Fri, 21 Dec 2012 18:53:41 GMT
ETag: "66d820174d6de17a278b327e4c3e9b4e"
x-goog-sequence-number: 3
x-goog-generation: 1356116021512000
x-goog-metageneration: 1
Content-Type: application/octet-stream
Content-Language: en
Accept-Ranges: bytes
Content-Length: 160
Cache-Control: public, max-age=3600, no-transform
Age: 3449

这似乎表明它将在一小时内过期,尽管没有缓存。

谷歌云存储提供了强大的数据一致性:一旦写入完成,从世界任何地方读取都将获得最新的数据

但是,如果启用缓存(默认情况下,对于任何公共可读对象都是如此),则对该对象的读取可以看到与该对象上指定的缓存控件最大年龄相同的对象版本。例如,如果您上传的文件如下所示:

gsutil cp -a public-read file gs://my_bucket/file
您可以看到最大使用时间为1小时(3600秒):

如果要防止缓存公共可读对象,可以执行以下操作:

gsutil setmeta -h Cache-Control:no-cache gs://my_bucket/file
或者,可以在对象上设置较短的“最大年龄”:

gsutil setmeta -h 'Cache-Control:public, max-age=600, no-transform'

Mike Schwartz,谷歌云存储团队

我更新了我的问题,包括我尝试了无缓存,但我仍然看到max age=3600。旧文件是否需要在新的无缓存文件接管之前过期?@mike最好有一个功能,可以像在CDN上一样使缓存失效/刷新缓存。@mihai-很难提供缓存失效功能,因为一旦使用非0缓存TTL,互联网上的任何缓存(不仅仅是谷歌控制下的缓存)都是允许的(根据HTTP规范)缓存数据。在与@aqquadro讨论后,我发现了问题:错误地指出上载非公共对象然后将ACL设置为公共读取将导致不可缓存的对象。事实上HTTP规范默认允许缓存公共对象,因此要禁止缓存,需要设置缓存控制头,例如mple使用命令:gsutil-h Cache-Control:private cp-a public read file.png gs://your bucket。(我还将修复不正确的文档。)@Pier-不在一个请求中。您必须执行以下操作:gsutil-m-h“Cache-Control:no Cache,no store,必须重新验证”gs://your bucket/**将对bucket中的每个对象发出请求。
gsutil setmeta -h 'Cache-Control:public, max-age=600, no-transform'