浏览器从url输入到页面展示具体经历了那些呢?
- DNS进行解析url,拿到真实的ip地址
- 对比浏览器强制缓存的有效期,如果在有效期内,浏览器直接返回状态码为
200的缓存数据。
强制缓存的
http请求头:
- HTTP1.0的时候
expires,他是一个相对于本地计算机的绝对时间格式,可以修改本地时间使缓存失效- HTTP1.1新增了
cache-control,设置max-age=XXX,其是一个相对于服务器的精确到秒的时间戳- 可以设置
cache-control:no-cache强制使用协商缓存而不使用强制缓存
- 如果不存在强制缓存的话,向服务器发送http请求建立
tcp链接(会经历三次握手),服务器对比协商缓存,如果在有效期内返回304状态码,告诉浏览器使用缓存,否则返回200状态码及最新的资源数据
tcp三次握手:
- 客户端对发送SYN=1,seq=X的包到服务器
- 服务器接收后返回ACK=X+1,seq=Y的包到客户端
- 客户端接收后返送ACK=Y+1的包到服务器完成三次握手操作建立tcp链接
- 浏览器拿到响应的数据并进行解析
- 解析HTML生产DOM树
- 解析css生成CSSOM树
- 合并DOM树、CSSOM树生成渲染树
- 进行layout/reflow布局(当在文档流中的元素宽高、位置、边框、padding、margin等改变空间的属性发生变化是会触发reflow操作,随后触发replain)
- 进行绘制页面展示(当元素的颜色等改变空间属性的值发生变化是会触发replain操作)