2015-08-15 89 views
0

我正在将映像复制到Google云端存储并希望通过URL公开发布。我希望浏览器在可用时使用其缓存版本。Google云端存储:通过缓存的状态200进行访问,而不是状态304

我做

gsutil -h "Cache-Control:public,max-age=3600" cp -a public-read -r path/file.png gs://my_bucket/ 

但是,浏览器不显示状态200 /缓存这一形象。相反,它的状态为304.(我在这种情况下设置了3600个时间限制。)

回答

1

这是预期的行为。 304表示“未修改”,因此浏览器应使用缓存值。

请参阅the w3 spec。从文档:

如果客户端已经执行了条件GET请求并且允许访问但文档没有被修改,服务器应该用这个状态码来响应。 304响应不能包含消息体,因此总是由头字段后的第一个空行终止。

+0

根据该http://stackoverflow.com/questions/1665082/http-status-code-200-cache-vs-status-code-304状态304是较慢的和实际上使向服务器发出请求。我不想那样。 – user984003

+0

@ user984003好吧,这是一个有点不同的问题。您无法阻止浏览器根本不请求资源。你当然无法使用HTTP状态码。 HTTP状态代码仅在已经向服务器发出请求时才相关;它们是作为响应的一部分发送的。 –

+0

@ user984003当浏览器使用它自己的缓存时,链接到的答案必须处理。是否这样做取决于用户设置。作为网站所有者,您无法控制浏览器在自己的缓存方面所做的工作。你只能告诉它你认为应该做什么。 –