web性能优化对于任何大型项目都是必不可少的一环,那么如何做好web端的性能优化,从哪些方面入手?这些问题猛地提出来会让很多人有无从下手的感觉,那么接下来,我结合一些前辈发表的文章并总结下个人的性能优化经验,系统性的总结从哪些方面入手。
首先提出一个问题:浏览器的一个请求从发送到返回都经历了什么?
一个简单的流程:
- 第一步:浏览器提出域名解析请求,并将该请求发送给本地的域名服务器(domain 与 ip 转化);
- 第二步:当本地的域名服务器收到请求后,就先查询本地的缓存,如果有该纪录项,则本地的域名服务器就直接把查询的结果返回;
- 第三步:如果本地的缓存中没有该纪录,则本地域名服务器就直接把请求发给根域名服务器(DNS服务器),然后根域名服务器再返回给本地域名服务器一个所查询域(根的子域)的主域名服务器的地址;
- 第四步:本地服务器再向上一步返回的域名服务器发送请求,然后接受请求的服务器查询自己的缓存,如果没有该纪录,则返回相关的下级的域名服务器的地址;
- 第五步:重复第四步,直到找到正确的纪录;
- 第六步:返回的ip地址到浏览器,浏览器根据ip地址,根据网路传输协议,带着请求相关参数发送到网络中经过局域网、交换机、路由器到主干网络到达服务端;
- 第七步:请求进入服务端,先进入controller层进行相关的逻辑处理以及请求的分发,然后调用model层,model是和数据进行交互的,model会进行读取数据库的相关操作;
- 第八步: 最终会通过view 层将渲染好的页面返回给网络,再按照原路进行返回到达浏览器,进行render渲染,呈现在用户面前。
请求过程中的一些潜在的性能优化点
- dns是否可以通过缓存减少dns查询时间;
- 网络请求的过程走最近的网络环境?
- 相同的静态资源是否可以被缓存?
- 等否减少请求http请求大小?
- 减少http请求
- 服务端渲染
从上面列举的流程可以看到,深入理解http 请求的过程 是前端性能优化的核心
以上作为web性能优化的开篇文章,接下来会继续对浏览器端的性能优化讲解。