大型网站的魂灵:性能
在前一篇漫笔大型网站体系架构的演化中,介绍了大型网站的演化进程,时期交叉了一些技能和手法,咱们能够从中看出一个大型网站的轮廓,但想要把握规划开发保护大型网站的技能,需求咱们一步一步去研究实习。所以我计划写一个系列,从理论到实习讲述大型网站的点滴,这也是一个一起学习的进程,期望自个能坚持下去。系列大概会分为两有些,理论和实习,理论有些尽量通俗易懂,也要讲一些细节。实习有些会抽取一些技能做实习,将办法、解决问题进程共享出来。这篇文章将讲述大型网站中一个重要的要素,功用。
8203;
啥是功用
有人说功用即是拜访速度快慢,这是最直观的说法,也是用户的实在体会。一个用户从输入网址到按下回车键,看到页面的快慢,这即是功用。关于咱们来说,需求去发掘这个进程,因为这决议咱们怎么去做功用优化。
这中心发生了啥?
用户拜访网站的全部流程:用户输入网站域名,经过DNS解析,找到方针服务器IP,恳求数据经互联网到达方针服务器,方针服务器收到恳求数据,进行处置(履行程序、拜访数据库、文件服务器等)。处置完结,将呼应数据又经互联网回来给用户浏览器,浏览器得到成果进行核算烘托显现给用户。
咱们把全部进程,分为三段途径:
1、榜首段在用户和浏览器端,首要担任宣布用户恳求,以及接受呼应数据进行核算烘托显现给用户;
2、第二段在网络上,担任对恳求数据、呼应数据的传输;
3、第三段在网站服务器端,担任对恳求数据进行处置(履行程序、拜访数据库、文件等),并将成果回来;
榜首途径
榜首途径花费的时刻包含输入域名建议恳求的时刻和浏览器收到呼应后核算烘托的时刻。
输入域名建议恳求,本质进程是:
1、用户在浏览器输入要拜访的网站域名;
2、本地DNS恳求网站授权的DNS服务器对域名进行解析,并得到解析成果即IP地址(并将IP地址缓存起来)。
3、向方针IP地址宣布恳求。
从这个进程咱们能够看到,优化的当地首要是削减DNS解析次数,而假如用户浏览器设置了缓存,则再第2次拜访相同域名的时分就不会去恳求DNS服务器,直接用缓存中的IP地址宣布恳求。因而这个进程首要取决于浏览器的设置。如今干流的浏览器默认设置了DNS的预取功用(DNS Prefetch),当然你也能够自动奉告浏览器我的网站需求做DNS预取:
浏览器将数据进行核算烘托的进程:
1、浏览器解析呼应数据;
2、浏览器创建DOM树;
3、浏览器下载CSS款式,并应用到DOM树,进行烘托;
4、浏览器下载JS文件,开端解析履行;
5、显现给用户。
从这个进程,咱们能够找出不少能够优化的当地。首先咱们能够尽量控制页面巨细,使得浏览器解析的时刻更短;而且将多个CSS文件、JS文件文件兼并紧缩削减文件下载的次数和巨细;别的留意将CSS放在页面前面,JS拜访页面后面,这样便于页面首先能烘托出来,再履行js脚本,关于用户来说有非常好的体会。最终我还能够设置浏览器缓存,下次拜访时从缓存读取内容,削减http恳求。
该代码说明晰浏览器启用了缓存并在5秒内不会再次拜访服务器。留意缓存的设置需求联系你的事务特性来恰当装备。
以下是京东商城的HTML简图:
css款式放在html前面,而且进行了兼并。
大型网站 网站功用 代码优化
大多数的JS文件放在页尾。