前端发送请求到后端全过程慢是在哪一个步骤慢
前端向后端发送请求的整个过程可能会涉及多个环节,任何一个环节出现问题都可能导致整体变慢。以下是常见的几个关键步骤及其可能出现的问题:
-
DNS解析
- 当用户输入网址时,浏览器需要将域名转换成IP地址。如果DNS服务器响应缓慢,则会显著延迟整个流程。
-
建立TCP连接(三次握手)
- 浏览器与目标服务器之间需先完成三次握手才能真正开始传输数据包。网络状况差、高延迟或防火墙等因素会影响这一阶段的速度。
-
SSL/TLS加密协商
- 对于HTTPS协议来说,在实际通信前还需要额外进行密钥交换等操作以确保安全性。若证书配置不当或者存在兼容性问题也可能引发耗时增加的情况发生。
-
发送HTTP请求并等待回应
- 请求到达应用层之后,由Web框架接收处理直至返回结果给客户端为止;期间包括但不限于数据库查询效率低下、业务逻辑复杂度高等原因都会导致相应时间延长。
-
页面渲染及资源加载
- 即便收到HTML文档本身速度快,但如果嵌套了大量的外部脚本文件(css/js/images),并且它们又没有正确设置缓存策略的话同样会造成体验不佳的现象出现如白屏现象等等…
为了确定具体是哪一步骤造成了性能瓶颈,可以借助开发者工具(F12)中的“Network”面板观察每个请求的具体耗时分布情况,并结合实际情况分析优化方向!
开发者工具(F12)中的“Network”面板的Request sent时间与什么有关,如何缩短时间
开发者工具(F12)中的“Network”面板展示了网页加载过程中各个请求的时间消耗详情。其中,“Request sent”的时间表示从浏览器发出 HTTP 请求到服务器接收到该请求之间的耗时部分,这部分时间和以下几个方面密切相关:
-
网络延迟 (Latency)
- 主要是由于物理距离以及数据包在网络中传输所需的时间所引起。
- 解决方案:选择离用户更近的数据中心部署服务;采用内容分发网络(CDN) 技术降低跨区域访问带来的延迟。
-
DNS 查询耗时
- 如果每次都需要做完整的 DNS 查找而没有利用缓存机制,这将会增加总的响应时间。
- 改进办法:启用 DNS 缓存功能减少不必要的域名解析次数;考虑使用公共快速 DNS 提供商提高解析速度。
-
TCP 握手过程
- 每当新建 TCP 连接时都要经历三次握手的过程,这也增加了初始连接的成本。
- 应对措施:实施长连接复用技术比如 Keep-Alive 或者升级至支持多路复用特性的协议如 HTTP/2 ,避免频繁创建新链接。
-
安全层(Secure Layer)初始化开销
- 对于 HTTPS 站点而言还需加上 TLS 握手花费的时间。
- 调优建议:简化证书链长度、提前预加载会话密钥等手段加快建立加密通道的速度。
总之,要想有效缩短 “Request Sent” 的持续周期可以从上述角度入手进行全面考量和针对性调整。同时也要注意到,因为这个数值很大程度上依赖于用户的实际联网条件,所以完全消除这种类型的延迟几乎是不可能的任务。我们只能尽量做到最小化影响程度而已。