ETag 是否使 Cache-Control 标头无效?

Mat*_*ero 5 etag caching http-headers http-status-code-304 if-none-match

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

Cache-Control: public, max-age=120
ETag: "3D03F8066015A1438532E049AE5E16EA"
Run Code Online (Sandbox Code Playgroud)

浏览器第一次收到这个响应时,它正确地缓存了 2 分钟。

但是,下次我请求资源时,我的浏览器现在发送了一个IfNoneMatch标头,并按304 Not Modified预期获得了一个标头,以及另一个Cache-Control要缓存 2 分钟的标头。

但是浏览器没有缓存响应。我不断刷新页面,它不断提出请求,因此不断获得304 Not Modified.

这是正常行为吗?

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