1. 抓包测试
1.1. 首先在服务器创建一个简单的 HTML 文件,用浏览器访问一下,成功表示 HTML 页 面。Fiddler 就会产生下面的捕获信息。 需要留意的是
(1)因为是第一次访问该页面,客户端发请求时,请求头中没有 If-Modified-Since 标 签。
(2)服务器返回的 HTTP 状态码是 200,并发送页面的全部内容。
(3)服务器返回的 HTTP 头标签中有 Last-Modified,告诉客户端页面的最后修改时间。
1.2. 在浏览器中刷新一下页面,Fiddler 就会产生下面的捕获信息。 需要注意的是
(1)客户端发 HTTP 请求时,使用 If-Modified-Since 标签,把上次服务器告诉它的文 件最后修改时间返回到服务器端了。
(2)因为文件没有改动过,所以服务器返回的 HTTP 状态码是 304,没有发送页面的内 容。
1.3. 用文本编辑器稍微改动一下页面文件,保存。再用浏览器访问一下,Fiddler 就会产 生下面的捕获信息。
需要留意的是
(1)客户端发 HTTP 请求时,使用 If-Modified-Since 标签,把上次服务器告诉它的文 件最后修改时间返回到服务器端了。
(2)因为文件被改动过,两边时间不一致,所以服务器返回的 HTTP 状态码是 200,并 发送新页面的全部内容。
(3)服务器返回的 HTTP 头标签中有 Last-Modified,告诉客户端页面的新的最后修改 时间。
2. Http1.1 和 Http1.0 的区别
2.1. 默认持久连接和流水线 HTTP/1.1 默认使用持久连接,只要客户端服务端任意一端没有明确提出断开 TCP 连 接,就一直保持连接,在同一个 TCP 连接下,可以发送多次 HTTP 请求。同时,默认采用 流水线的方式发送请求,即客户端每遇到一个对象引用就立即发出一个请求,而不必等到收到前一个响应之后才能发出下一个请求,但服务器端必须按照接收到客户端请求的先后顺序依次回送响应结果,以保证客户端能够区分出每次请求的响应内容,这样也显著地减少了整个下载过程所需要的时间。
HTTP/1.0 默认使用短连接,要建立长连接,可以在请求消息中包含 Connection: Keep-Alive 头域,如果服务器愿意维持这条连接,在响应消息中也会包含一个