如何在Google云端存储上正确设置过期标题?

Ale*_*ski 3 google-cloud-storage

谷歌云存储开发者指南介绍了如何设置的Cache-Control头,并解释了API的一致性行为的重要影响,但头部没有提及也没有他们似乎从Cache-Control配置继承到期.

Expires标头似乎始终等于请求时间加1年,无论Cache-Control设置如何,例如.

$ gsutil setmeta -h "Cache-Control:300" gs://example-bucket/doc.html 
Run Code Online (Sandbox Code Playgroud)

已通过Google Cloud Storage存储桶(示例存储桶)中的文档(doc.html)发出请求

$ curl -I http://example-bucket.storage.googleapis.com/doc.html
Run Code Online (Sandbox Code Playgroud)

它产生了以下标题

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
Run Code Online (Sandbox Code Playgroud)

Mar*_*hen 5

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

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

gsutil setmeta "Cache-Control:max-age=7200" gs://marc-us/xyz.txt
Run Code Online (Sandbox Code Playgroud)

然后我使用带有-D选项的gsutil cat命令检索对象,以查看请求/响应详细信息,如下所示:

gsutil -D cat gs://marc-us/xyz.txt
Run Code Online (Sandbox Code Playgroud)

在两个实验中,Expires标头根据对象的max-age设置(即请求时间后一小时和请求时间后两小时)生成预期时间戳.