虽然网络优化这个话题听起来颇为深奥,但是作为初学者,我们依旧可以一步一步来掌握它。既然前面已经详细讲述了前端性能优化的技巧,本期我们将揭开网络传输层优化的大幕,帮助大家完成前端性能优化的三重奏。
在网络这一领域内,每个职业小伙伴都离不开对它的了解和运用。从DNS解析开始,到建立TCP连接,再到请求与响应的过程,每一个步骤都会影响到我们的网站性能。接下来,让我们一起来探索这些奥秘吧!
一、DNS解析
当我们输入域名访问一个网站时,首先需要完成的任务就是DNS解析。这一过程可以分为以下三个阶段:
- 首先浏览器会查找自身的DNS缓存,这个过程较为迅速;
- 如果本地缓存中没有找到相应的IP地址,则会查询系统DNS缓存;
- 最后,如果以上两个阶段的查询都未能成功找到,就需要递归地查询域名服务器,最终获得对应的IP地址。
二、建立TCP连接
获取到域名对应的IP地址之后,我们需要与网站的服务器建立TCP连接。这一步骤可以概述为以下几个过程:
- 浏览器随机选择一个端口(14-6555),发送链接请求;
- 请求经过TCP/IP模型的层层封装,传输到服务器端;
- 通过内核的TCP/IP协议栈识别连接请求,解封包,并最终建立TCP连接。
三、三次握手/四次握手
在TCP连接过程中,我们还需要经历一个至关重要的步骤——握手过程。以下是两种常见的握手方式:
- 三次握手:SYN > SYN-ACK > ACK;
- 四次握手:如果需要进行HTTP重定向,则需要从头开始进行握手。
四、发送请求与响应
Web浏览器会向服务器端发送HTTP请求报文,而服务器则会相应地返回HTTP响应报文。以下是请求和响应的组成结构:
- 请求报文:由请求行、请求头和请求正文三部分组成;
- 响应报文:由状态码、响应头和实体内容三部分组成。
五、性能分析
假设一个典型的宽带环境,并且不考虑本地缓存的情况下,我们可以大致分析出以下时间线:
- DNS解析(5ms)
- TCP握手(one RTT)
- SSL协商(two RTTs)
- 服务器处理请求
- 服务器回传响应数据
将这些环节加起来,我们得出一个请求大概需要47毫秒的时间。尽管这个时间看起来较长,但事实上,随着DNS预解析和优化的不断进步,这一时间已被大大缩减。
六、优化方案
- DNS优化:利用DNS缓存快速解析域名;
- 负载均衡:为同一个主机名配置多个IP地址,实现负载均衡;
- 缓存性能:强缓存和协商缓存的运用;
- ServiceWorker与Web Manifest:实现离线使用功能。
以上就是网络优化初学者的一些基础内容。通过学习这些知识,相信大家已经对网络传输层的优化有了一定的了解。希望这篇文章能够帮助到正在追求前端优化的你!