并发请求数2-8,优化点:domain hash, cookie free, CSS sprites, JS/CSS combine, max expires time, loading images on demand
物理层、 数据链路层、 网络层(IP)、 传输层(TCP)、 会话层(SSH/TLS等)、 表示层(信息格式化、端到端加密、上下文控制)、 应用层(HTTP)
protocol://host:port/path?query#fragment
DNS解析,优化点:DNS预解析
浏览器->本机->host->路由服务器->dns服务器
请求协议,如果是HTTPS,则返回公钥证书。
tcp/ip请求:3次握手
请求协议->确认协议->返回确认,之后传输数据
tcp/ip关闭:4次握手
请求关闭->确认关闭返回请求关闭->确认关闭->双方关闭
get请求时,浏览器会把 headers和 data一起发送出去,服务器响应200(返回数据);
post请求时,浏览器先发送 headers,服务器响应 100continue,浏览器再发送 data,服务器响应200(返回数据)。
报文一般包括了:通用头部,请求/响应头部,请求/响应体。
这也是开发人员见过的最多的信息,包括如下:
Request Url: 请求的web服务器地址
Request Method: 请求方式(Get、POST、OPTIONS、PUT、HEAD、DELETE、CONNECT、TRACE)
Status Code: 请求的返回状态码,如200代表成功
Remote Address: 请求的远程服务器地址(会转为IP)
204状态:表示请求完成,不处理响应,甚至不跳转。
206状态:部分内容和范围请求,客户发送了一个带有Range头的GET请求,服务器完成了它。
http请求时,除了头部,还有消息实体,一般来说,请求实体中会将一些需要的参数都放入进入(用于post请求)。譬如实体中可以放参数的序列化形式( a=1&b=2这种),或者直接放表单对象( FormData对象,上传时可以夹杂参数以及文件),等等。
而一般响应实体中,就是放服务端需要传给客户端的内容。一般现在的接口请求时,实体中就是对于的信息的json格式,而像页面请求这种,里面就是直接放了一个html字符串,然后浏览器自己解析并渲染。
cookie中设置 httponly(这样就无法通过js操作了)。
优化每次必带的问题。
同源线程限制,多源加速
同域通信 storage
- JSONP
- Hash
- postMessage
- WebSocket
- CORS