http-304

14次阅读

共计 1108 个字符,预计需要花费 3 分钟才能阅读完成。

304 not modified

意思是:Not Modified 客户端有缓冲的文档并发出了一个条件性的请求(一般是提供 If-Modified-Since 头表示客户只想比指定日期更新的文档)。服务器告诉客户,原来缓冲的文档还可以继续使用。

缓存机制 不是错误提示

HTTP/1.1 304 Not Modified 不是服务器发出的错误提示。而是服务器所承载的业务系统在开发时为了节省链路带宽和提升浏览器的体验对 GET/js、css、image 等执行了缓存机制。

HTTP/1.1 304 Not Modified 不是服务器发出的错误提示。而是服务器所承载的业务系统在开发时为了节省链路带宽和提升浏览器的体验对 GET/js、css、image 等执行了缓存机制。客户端在第一次对服务器业务发出 GET 请求后,客户端浏览器缓存了该页面,当客户端第二次对服务器发出同样的 GET 请求时,若客户端缓存中的 If-Modified-Since 过期,客户端将向服务器发出 GET 请求,验证 If-Modified-Since 和 If-None-Match 是否与 WEB-server 中信息一致,如果 GET 页面未做任何修改,服务器对客户端返回 HTTP/1.1 304 Not Modified,客户端则直接从本地缓存中将页面调取

第一次请求:

原理:客户端发送请求-》本地无缓存-》向服务发送请求-》返回静态资源,并且缓存到本地
这个是乐视网首页第一次请求时的截包,会发现静态资源的返回都是 200

第二次请求:

  1. 再这次请求中,http 请求头部包括了 If-Modified-Since,If-None-Match 这两个参数与服务器做对比。如果相同,则获取本地的缓存信息,反之服务器返回新的资源。并且 Last-Modified,ETag 数据重置。
  2. 服务器静态资源修改了,response 返回的 Last-Modified,ETag 也会修改

  • 这个是乐视网首页第二次请求时的截包,会发现静态资源的返回基本都是 304


]

在做 http 请求分析之前,一定要了解这个参数 requset 请求

(1)If-Modified-Since: 发送请求时与服务器
(2)If-None-Match:

response 返回

(1)Last-Modified: 资源被修改的最后时间
(2)ETag: 对资源的索引节(INode),大小(Size)和最后修改时间(MTime)进行 Hash 后得到的,是资源的唯一标识

特别注意:

(1)该两项参数将存储在客户端的浏览器 cache 中,Last-Modified 值存储为 If-Modified-Since,ETag 值存储为 If-None-Match.

(2)ETag 的优先级高于 Last-Modified.

正文完
 0