11 5 月, 2026

黑龙江省娇馨化妆品有限公司

虽然他搞的是前端,但是网络这一块是“大家”的,所以个人觉得各职业小伙伴看一看没坏处~正文前两期讲过了如何在代码层级进行性能优化,本期给大家带来网络传输层的优化,也是性能三部曲的终结篇:全网优化:专业网站技术解决方案全新体验。

首先,让我们回顾一下整个Web前端性能优化的流程。在DNS解析阶段,浏览器会通过自身的DNS缓存(缓存时间相对较短,大概1分钟,且只能容纳1条缓存)来寻找到域名的IP地址。如果浏览器自身的缓存中没有找到,它将会尝试搜索系统自身的DNS缓存。

接着,如果在之前的过程都没有找到所需信息,那么它会从hosts文件中查找。若仍然无法获取到信息,就会递归地去域名的服务器进行查询,以获得最终的IP地址。

在域名解析完成后,浏览器将通过建立TCP连接来与WEB应用程序(如httpd、nginx等)的8端口发送链接请求。在这个过程中,原始的HTTP请求会经过TCP/IP4层模型的层层封装。这个过程包括从客户端到服务器的所有路由设备和局域网(如果有)。

然后,请求会进入网卡,再进入到内核的TCP/IP协议栈,用于识别连接请求、解封包等操作。在这之后,它可能还需要通过Netfilter防火墙(属于内核模块)的过滤才能到达WEB应用程序,完成TCP/IP连接的建立。

在TCP连接的三次握手(SYN、SYN-ACK、ACK)/四次握手(当使用HTTPS协议时还有SSL握手过程)建立后,浏览器会发送HTTP请求报文。HTTP请求报文由三部分组成:请求行、请求头和请求正文。

同样地,Web服务器也会回送HTTP响应报文。HTTP响应也由三部分组成:状态码、响应头和实体内容。

假设在一个典型的宽带环境下,没有本地缓存且DNS解析较快(5ms)、TCP握手、SSL协商较快的服务器响应时间(1ms)的情况下,一次请求的总延迟时间为47ms(包括DNS解析、TCP握手、SSL握手、发送请求到服务器、服务器处理、服务器回传响应数据等环节)。实际上,这个47ms已经是相对比较乐观的估计了,因为在较早的数据中,现在的DNS预解析和优化已经将这部分时间减少了一部分。

接下来,我们来看一下优化方案。首先,我们可以通过使用DNS缓存来加快DNS解析速度。其次,使用DNS负载均衡可以为一台主机名配置多个IP地址,在应答DNS查询时,DNS服务器对每个查询将以主机记录中各条IP地址按顺序返回不同的结果,将客户端的访问引导到不同的机器上,从而实现负载均衡的效果。

优化缓存性能也很重要。强缓存和协商缓存是我们需要关注的两个概念。当浏览器加载资源时,它首先会根据这个资源的一些HTTP header来判断是否命中强缓存。如果命中了强缓存,浏览器就会直接从自己的缓存中读取资源,不会向服务器发送请求。反之,如果没有命中强缓存,浏览器一定会发送一个请求到服务器。

缓存的实现可以通过本地磁盘和内存来完成。在本地硬盘模式中,主要应用于无痕浏览的场景,当窗口关闭时,可以清除掉所有的磁盘缓存。而内存模式主要应用于有痕浏览,在窗口关闭后,仍会保留一份资源列表,供浏览器下次开启时使用。

此外,我们还可以利用ServiceWorker的概念来实现资源缓存。谷歌开发的ServiceWorker可以在后台启动一条服务线程,不管有多少个页面打开,始终只有一个Worker在负责管理。ServiceWorker可以拦截页面请求,查看缓存,实现离线访问等功能。

当然,兼容性问题也是我们需要关注的。目前所有的浏览器都支持ServiceWorker。我们可以利用Chrome DevTools进行优化传输资源的检查与优化。

最后,让我们回顾一下整个全文的内容。我们首先介绍了Web前端性能优化的流程,然后分析了优化的方法,包括DNS优化、缓存优化、协议优化等。通过这些优化,我们可以提高网站的性能,提升用户体验。希望这篇文章能够帮助你在今后的工作中更好地优化你的网站性能。

Share: Facebook Twitter Linkedin

Comments are closed.