浏览器工做的详细流程图
缓存相关
- Prompt for unload 卸载已经存在的页面 释放占用的内存 提醒unload
- redirect 本地的重定向,先从本地找,本地找不到再请求服务器 真正的开始unload
- App cache 操做浏览器的缓存
网络相关
-
DNS 查询服务器IP地址 CDN 优化web
-
TCP 与服务器连接TCP 长链接优化,复用TCP浏览器
-
Request 优化服务器缓存
-
Response 压缩 gzip服务器
处理数据
- Processing 解析文档 生成dom树,绑定事件
- onLoad 加载
DNS详解
- 域名系统 将域名(文本)转化为IP
- 顶级域名 后缀 .com/.com.cn 加了前缀 www.就变成了二级域名 www是万维网
- 域名服务器
- Root 解析 .com
- TLD 解析 google.com
- Name 解析 www.google.com
- 域名资源记录
TCP三次握手与四次挥手
-
TCP协议模型详解 网络
-
三次握手dom
- 客户端发起 调用connect() 发送指令 SYN seq顺序号 TCP连接时候是把大数据包拆分红小数据包传输的,因此就有了标识的顺序号,以便进行组装
- 远程服务器祯听 listen() ACK应答顺序号 服务器也有本身的请求号
- 客户端应答服务器的顺序号加1返回服务器
-
屡次数据传输大数据
-
四次分手优化
- 客户端 调用close() 发送指令 FIN 顺序号 应答号
- 服务器 响应客户端请求
- 服务器应答以后 调用close() 发送 FIN
- 客户端进行确认已断开 服务器多一次是为了先响应,避免客户端超时
CDN
缓存机制
× Etag/If-None-Match策略google
- Etag: web服务器响应请求时,告诉浏览器当前资源在服务器的惟一标识
- If-None_Match:当资源过时时(使用Cache-Control标识的max-age),发现资源是Etage声明,则再次向web服务器请求时带上头If-None-Match(Etag的值)。web服务器收到请求后发现有头If-None-Match则与被请求资源的相应校验串进行比对,决定返回200或者304 × last-Modified/If-Modified-Since策略
- Last-Modified:标示这个响应资源的最后修改时间。web服务器在响应请求时,告诉浏览器资源的最后修改时间。
- If-Modified-Since:当资源过时时(使用Cache-Control标识的max-age),发现资源具备Last-Modified声明,则再次向web服务器请求时带上头 If-Modified-Since,表示请求时间。web服务器收到请求后发现有头If-Modified-Since 则与被请求资源的最后修改时间进行比对。若最后修改时间较新,说明资源又被改动过,则响应整片资源内容(写在响应消息包体内),HTTP200;若最后修改时间较旧,说明资源无新修改,则响应HTTP 304 (无需包体,节省浏览),告知浏览器继续使用所保存的cache。