前端性能优化分析总结

本文深入探讨了前端性能优化的各个方面,包括HTTP协议的三次握手和四次挥手,浏览器从URL到页面渲染的过程,以及浏览器的渲染机制。重点讨论了资源加载优化策略,如减少请求数量和体积,使用CDN,按需加载和缓存技术。同时,文章还涵盖了CSS和JS的优化技巧,强调了正确的资源加载顺序和避免重绘、重排的影响。
摘要由CSDN通过智能技术生成

涉及原理

HTTP协议

三次握手

  • 客户端发出请求报文;
  • 服务端收到后进行应答,对客户端的连接请求进行确认;
  • 客户端收到服务器收到的连接确认请求后再向服务器发送确认信号。

问题一:为什么客户端需要再对服务器的报文进行确认呢?
这里是为了已经失效的报文突然又重传到B,因而产生错误。
采用三次握手可以防止这种现象的发生,客户端不对服务端的确认报文进行确认,服务器端由于收不到确认,就知道客户端没有要求建立连接。

四次挥手

  • 数据传输结束后,客户端向服务器发送断开连接的请求;
  • 服务器端收到确认报文后进行确认,释放从客户端到服务器端这个方向的连接,TCP连接处于半关闭状态;
  • 服务器向客户端数据发送完了之后,服务器端向客户端发送TCP释放连接请求;
  • 客户端收到服务器断开请求后,进入TIME-WAIT(时间等待)状态,需要经过时间等待计时器(TIME-WAIT timer)设置的时间2MSL(时间MSL叫做最长报文段寿命)后,客户端才关闭连接,关闭从服务器端到客户端的连接。

问题一: 这里为什么是断开连接是四次呢?
因为TCP是全双工通信机制,也就是双向同时通信

问题二:为什么客户端要在TIME-WAIT状态等待2MSL(2个最长报文段寿命)呢?
第一,保证客户端发送的最后一个确认关闭连接的报文可以到达B。这个确认报文有可能丢失,B会超时重传关闭连接的请求,客户端就可以在2MSL 时间内收到这个重传的报文,然后客户端再重传一个确认报文,重启2MSL计时器,最后客户端和服务器端都正常进入CLOSEED状态。如果A在TIME-WAIT不等待一段时间,而是发送完释放连接的确认后立即释放链接,那么如果出现错误时,客户端无法收到服务器端的重传报文,服务器端就无法按照正常步骤进入CLOSED状态。
第二,经过2MSL可以本连接持续的时间内所产生的所有报文段都失效从网络中消失,使下一个连接中不会出现这种旧的连接请求报文段。

从输入URL到 页面渲染完毕,发生了什么

  1. 浏览器解析域名,将URL解析,获得对于服务器的IP地址;
  2. 浏览器与远程服务器通过TCP三次握手建立连接连接(TCP三次握手);
  3. 建立连接后浏览器会通过HTTP GET请求页面资源
  4. 远程服务器收到请求,会做逻辑操作,查找数据库,读取文件,将资源并通过http响应返回资源;
  5. 浏览器开始下载页面资源,浏览器对返回HTML资源进行解析渲染;
  6. 浏览器会将HTML解析生成DOM tree,将css解析生成CSSOM,将DOM tree和Css tree合并生成render tree(:after和:before这样的伪元素会在
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值