Cache-Control: max-age=315600000
Last-Modified(响应头):服务器在首次返回资源时附加该头,值为资源的最后修改时间 If-Modified-Since(请求头):浏览器再次请求同一资源时,自动将缓存的 Last-Modified 值填入此头发送给服务器 服务器验证逻辑: 若资源修改时间 ≤ If-Modified-Since 值 → 返回304 Not Modified(空响应体),浏览器使用缓存。 若资源已更新 → 返回200 OK及新资源 适用场景 静态资源(如图片、CSS)或低频更新的动态资源 局限性 时间精度仅到秒级,1秒内多次修改无法识别 文件内容未变但修改时间更新(如重部署)会导致无效重新加载
ETag(响应头):服务器生成资源的唯一标识符(如哈希值),如 ETag: "d41d8cd98f00b204e9800998ecf8427e" If-None-Match(请求头):浏览器再次请求时携带缓存的 ETag 值 服务器验证逻辑: 若当前资源 ETag 匹配请求头的值 → 返回304 Not Modified 若不匹配 → 返回 200 OK及新资源和新 ETag
强 ETag:资源任何变化均导致值改变(如内容哈希) 弱 ETag(W/前缀):允许语义等价的小变更(如元数据更新),如 ETag: W/"123xyz" 优势 解决 Last-Modified 精度不足和误判问题
两者可以同时使用,但是ETag的优先级更高,意味着先验证Etag的值,如果相同再校验last-modified的值
Cache-Control: no-store