ETag是否可以在没有Web服务器设置的缓存控制头的情况下工作

时间:2014-02-06 18:36:05

标签: caching browser browser-cache cache-control etag

我的服务器返回文件的以下标题:

Accept-Ranges:bytes
Connection:Keep-Alive
Content-Length:155
Content-Type:text/css
Date:Thu, 06 Feb 2014 18:32:44 GMT
ETag:"99000000061b06-9b-4f1c118fdd2f1"
Keep-Alive:timeout=5, max=100
Last-Modified:Thu, 06 Feb 2014 18:32:37 GMT

如您所见,它不会返回cache-control标头,但会返回ETagLast-Modified标头。

我的问题是浏览器是否要缓存所请求的文件?我可以观察到,在以下请求中,浏览器在标头中发送ETag:"99000000061b06-9b-4f1c118fdd2f1",服务器返回状态码304。

第二个问题:如果ETag设置为Cache-control,浏览器是否会缓存资源并请求no-cache

2 个答案:

答案 0 :(得分:0)

对于问题的第一部分 - 如果响应将被缓存以及何时将重新验证,则由您的浏览器(其实现和配置)决定。浏览器行为与验证标头和没有验证标头的行为之间的唯一(标准化)差异是前者可以通过验证减少服务器的流量。

第二个问题:是的。浏览器将缓存资源,但每次打开页面浏览器时都会询问源服务器是否未修改资源。如果未修改服务器将响应304并且浏览器将显示缓存内容。否则服务器将发送新内容。

答案 1 :(得分:0)

我的猜测是 ETag 可以用作 cache-control: no-cache