Caching ETag是否使缓存控制头无效?

Caching ETag是否使缓存控制头无效?,caching,http-headers,etag,http-status-code-304,if-none-match,Caching,Http Headers,Etag,Http Status Code 304,If None Match,我正在从RESTful web服务获取资源,并在响应中添加以下两个标题: Cache-Control: public, max-age=120 ETag: "3D03F8066015A1438532E049AE5E16EA" 浏览器第一次收到此响应时,会将其正确缓存2分钟 但是,下一次我请求资源时,我的浏览器现在发送了一个IfNoneMatch标题,并获得了一个304未按预期修改的,以及另一个缓存控制标题,以缓存2分钟 但是浏览器没有缓存响应。我不断刷新页面,它不断发出请求,因此不断得到未修改

我正在从RESTful web服务获取资源,并在响应中添加以下两个标题:

Cache-Control: public, max-age=120
ETag: "3D03F8066015A1438532E049AE5E16EA"
浏览器第一次收到此响应时,会将其正确缓存2分钟

但是,下一次我请求资源时,我的浏览器现在发送了一个
IfNoneMatch
标题,并获得了一个
304未按预期修改的
,以及另一个
缓存控制
标题,以缓存2分钟

但是浏览器没有缓存响应。我不断刷新页面,它不断发出请求,因此不断得到未修改的
304

这是正常的行为吗


我如何告诉浏览器在获得未修改的
304
后,在2分钟内重新验证其缓存资源,并且不再发出任何请求?

可能重复阅读问题@Joe linked。你所描述的听起来像是正确的行为。当你说“浏览器没有缓存响应”时。。。你怎么知道的?304表示它确实缓存了它。此外,如果您反复刷新超过2分钟,但仍得到304,则浏览器应用来自304响应的“新”TTL。浏览器在
上提供浏览器中缓存资产的
ETag
,如果没有匹配的
HTTP请求头,然后,服务器根据缓存中的当前资产检查令牌。如果
Etag
标题不匹配,则
304未修改
响应将发送到浏览器。根据
最大年龄
,此过程每120秒发生一次。