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