据我了解,这是浏览器缓存的工作原理.假设一个远期未来的标题被设置为让我们说一年,并且foo.js被设置为缓存.以下是一些场景:
首次访问该页面,服务器返回200并且foo.js缓存一年.
下次访问时,浏览器会检查缓存,但必须检查服务器是否已修改foo.js.如果没有,服务器返回304 - 未修改.
用户已在页面上(并且foo.js在缓存中)单击链接以转到另一个页面,浏览器查看foo.js的缓存版本并在不对服务器进行往返的情况下提供服务并返回200(缓存) ).
用户已经在页面上(并且foo.js在缓存中)并且出于某种原因命中F5/Reload,浏览器检查缓存但是必须往返服务器并检查foo.js是否已被修改.如果没有,服务器返回304.
正如您所看到的,每当刷新页面时,它总是必须访问服务器以检查文件是否已被修改.我知道这不是很多,服务器只会返回标题信息,但在某些情况下往返时间非常重要.
问题是,有没有办法可以避免这种情况,因为我已经设置了文件的到期时间.我只是希望它总是从缓存中获取它,直到到期期满或用其他东西替换文件(通过版本控制).