带有过去Last-Modified的Cache-Control Headers:浏览器是否不缓存请求?
浏览器缓存疑问解答
我在执行CURL请求时获取到以下HTTP响应头,请问我的假设是否正确:由于Last-Modified时间处于过去,浏览器不会缓存该请求?
➜ curl -I https://dommain.com/assets/sounds/intro.mp3 HTTP/2 200 date: Sat, 12 Nov 2022 23:39:39 GMT content-type: audio/mpeg content-length: 33976 last-modified: Tue, 01 Jan 1980 00:00:01 GMT etag: "12cea601-84b8" cache-control: no-cache accept-ranges: bytes strict-transport-security: max-age=15724800; includeSubDomains
你的假设不正确,浏览器是否缓存该请求的核心决定因素是cache-control: no-cache响应头,而非Last-Modified的时间:
no-cache的含义并非禁止缓存,而是浏览器可以将资源存入本地缓存,但每次要使用该缓存资源时,必须先向服务器发起验证请求(通过ETag或Last-Modified),确认资源未更新后才能复用缓存。- Last-Modified时间处于过去完全不影响缓存行为,它只是服务器用来判断资源是否新鲜的标识之一。即使这个时间很早,浏览器依然会缓存资源,只是后续请求时会带着这个时间去服务器验证。
内容的提问来源于stack exchange,提问作者DmitrySemenov
相关产品推荐
相关产品推荐

