Google cloud storage 如何在Google云存储上正确设置Expires头?

Google cloud storage 如何在Google云存储上正确设置Expires头?,google-cloud-storage,Google Cloud Storage,说明了如何设置缓存控制头,并说明了它们对api一致性行为的关键影响,但未提及Expires头,也未显示它们是从缓存控制配置继承的 Expires头似乎总是等于请求时间加上1年,而与缓存控制设置无关,例如 $ gsutil setmeta -h "Cache-Control:300" gs://example-bucket/doc.html 通过以下方式向Google云存储桶(示例桶)中的文档(doc.html)发出请求: 它产生了以下标题 HTTP/1.1 200 OK Server: HT

说明了如何设置缓存控制头,并说明了它们对api一致性行为的关键影响,但未提及Expires头,也未显示它们是从缓存控制配置继承的

Expires头似乎总是等于请求时间加上1年,而与缓存控制设置无关,例如

$ gsutil setmeta -h "Cache-Control:300" gs://example-bucket/doc.html 
通过以下方式向Google云存储桶(示例桶)中的文档(doc.html)发出请求:

它产生了以下标题

HTTP/1.1 200 OK
Server: HTTP Upload Server Built on Oct 3 2012 16:52:30 (1349308350)
Date: Sat, 13 Oct 2012 00:51:13 GMT
Cache-Control: 300, no-transform
Expires: Sun, 13 Oct 2013 00:51:13 GMT
Last-Modified: Fri, 12 Oct 2012 20:08:41 GMT
ETag: "28fafe4213ae34c7d3ebf9ac5a6aade8"
x-goog-sequence-number: 82
x-goog-generation: 1347601001449082
x-goog-metageneration: 1
Content-Type: text/html
Accept-Ranges: bytes
Content-Length: 7069
Vary: Origin

不确定您为什么说Expires标头显示请求时间加1年。在您的示例中,Expires标头显示请求日期后一小时的时间戳,这是预期的

我刚刚做了一个实验,通过以下命令将对象的最大年龄设置为3600,然后设置为7200:

gsutil setmeta "Cache-Control:max-age=7200" gs://marc-us/xyz.txt
然后,我使用带有-D选项的gsutil cat命令检索该对象,以查看请求/响应详细信息,如下所示:

gsutil -D cat gs://marc-us/xyz.txt

在这两个实验中,Expires标头根据对象的最大年龄设置(即请求时间后一小时和请求时间后两小时)生成了预期的时间戳。

看起来这是由格式错误的标头造成的。嗯

Cache-Control: 300, no-transform
应该是

Cache-Control: public, max-age=300, no-transform

如果设置正确,它们就会工作。请参阅。

感谢您的快速回复。我将使用gsutil工具来尝试这一点。我一直在使用它,使用v2.0api肯定能正常工作。我是。可能是交互库引入了错误…如何在“日期:Sat,2012年10月13日”之后一年内“过期:Sun,2013年10月13日”?看起来最近可能有一个bug(2018年4月下载的文件),该bug也导致了“提前一年过期”标题:,登录后的直接问题跟踪报告
Cache-Control: public, max-age=300, no-transform