有人试过吗?
这是用例。在第一个请求-响应周期中,这会发生:
请求 1:
GET / HTTP/1.1
...
回应 1
HTTP/1.0 200 OK
Etag: version1
Cache-control: max-age=1
... angly html here
....<link href="mycss.css" >
...
要求 2:
GET /mycss.css HTTP/1.1
...
响应 2(可能已推送):
Etag: version1
Cache-control: max-age=<duration-of-the-universe>
...
... brackety css ...
...
然后,当浏览器第二次进入同一页面时,它当然会再次获取“/”资源,因为 max-age 非常短:
GET / HTTP/1.1
...
If-not-modified: version1
但如果它在缓存中,它不会获取 mycss.css。但是,服务器可以使用“/”请求的“if-not-modified”标头中存在的验证器来了解客户端的缓存年龄,并可能得出浏览器的 mycss.css 版本太旧的结论. 在这种情况下,甚至在响应之前的请求之前,服务器就可以“承诺”一个新版本的 mycss.css/
根据规范,浏览器应该接受并使用它吗?