Http协议又称超文本传输协议,定义了Web客户向Web服务器请求页面的方式,以及服务器向客户传输Web页面的方式。Http使用TCP作为它的支撑运输协议,一旦连接建立,该浏览器和服务器进程就可以通过套接字借口访问TCP。因为HTTP服务器不存储关于客户的任何信息,所以我们说HTTP是一个无状态协议。
持续连接与非持续连接
每个TCP连接在服务器发送一个对象后关闭,即该连接不为其他的对象而持续下来。默认方式下,大部分浏览器打开5-10个并行的TCP连接,每个连接处理一个请求响应事务,也可以设置为1,所有连接串行建立。请求报文Connection: close不希望麻烦的使用持续连接,发送完请求即关闭该连接。
计算请求html文件到客户端接收整个文件所花的时间
RTT: 客户到服务器再返回客户的时间
涉及TCP三次握手在传输层协议详解 总响应时间就是俩个RTT加上服务器传输HTML文件的时间
cookie
- 客户端请求HTTP请求到服务器。
- 服务器为用户创建ID,通过HTTP响应报文Set-cookie返回
- 客户端会存储cookie
- 客户端再次发起请求是发送带有cookie请求报文的HTTP请求
- 服务器识别cookie执行特定操作 详见这里
条件GET方法
利用缓存能减少用户感受到的时间,但缓存器(代表一个请求浏览器)中的对象副本可能是久的如何处理,即实际上该对象已经被修改了。
- 请求web服务器获取的对象时,缓存器将对象转发到浏览器的同时也存储了该对象最后的修改时间。该时间为Http响应报文中的Last-Modified。
- 一段时间后再去请求该对象时,该缓存器会向web服务器发送一个条件GET执行最新的检查。条件GET:
- 请求报文使用GET方法
- 请求报文包含一个“If-Modified-Since”,时间是缓存器最后的修改时间。
- 如果资源未更新则返回一个状态行为304的响应报文,告诉缓存器能使用该对象,能向浏览器转发它缓存的该对象的副本