高级前端
http
【Q434】当服务器资源返回 304 时与那些 HTTP 响应头有关

当服务器资源返回 304 时与那些 HTTP 响应头有关

Issue 欢迎在 Gtihub Issue 中回答此问题: Issue 441 (opens in a new tab)

Author 回答者: buzuosheng (opens in a new tab)

304 Not Modified,表示资源没有发生过改变。 与协商缓存有关,也就是Last-Modify和Etag两个http响应头,在获取资源之前先判断缓存资源是否发生过改变。 no-cache表示使用缓存资源时,都向服务器请求验证。 no-store才表示不使用任何形式的缓存。

Author 回答者: shfshanyue (opens in a new tab)

再次请求时,需要向服务器校验新鲜度,如果资源是新鲜的,返回 304,从浏览器获取资源

           client         server
GET /a.js   ----------->
                   <----------- 200 OK
GET /a.js   ----------->
                   <----------- 304 Not Modified

与之相关的 Request/Response Headers 有以下几个

  • Last-Modified/If-Modified-Since
  • Etag/If-None-Match