首页 > 技术文章 > 浏览器刷新按钮行为与304请求

ende93 2021-05-26 14:26 原文

众所周知,浏览器会依据 http 的请求头缓存相应资源,当资源过期的时候,会再次向服务器发出请求校验当前的缓存是否过期,如果没有过期的话,服务器就会响应一个 304 请求。

正常情况下,该请求仅会在缓存过期的时候发出。但是在以前,当用户点击浏览器的刷新按钮时,尽管资源没有过期,浏览器还是会进行重新校验,即会获得 304 请求,这意味着额外的服务器开销/压力。

所以在 2017 年的时候,facebook 团队就向 chrome 等浏览器厂商提出了请求。

chrome 就改成刷新不发条件请求(未过期的情况),firefox 则实现了 Cache-Control: immutable 协议,safari 两者都实现了。

相关链接

  1. 这些浏览器改动减少了 facebook 60% 的请求量
  2. 关于缓存和 Chrome 的“新版刷新”
  3. 扼杀 304,Cache-Control: immutable
  4. 浏览器实现 Cache-Control: immutable 的情况

推荐阅读