在开始前,博主先百度下“为什么xx打开慢”,结果如下
传统巨头
百度 30,200,000 新浪 48,200,000 搜狐 4,420,000
新兴贵族
知乎 47,100,000 豆瓣 6,230,000 优酷 2,310,000
为什么互联网技术发展到今天,依然无法彻底解决网站打开慢的问题?这是IT行业的顽疾不可治愈吗?
从数据上可以看到 知乎虽然是新兴贵族,但其网站打开慢的次数却比传统巨头百度还要多,几乎和新浪并肩,新浪有数十年打开慢次数的积累,才险胜知乎,知乎作为后期只秀真是令人刮目相看。
而优酷则是出现打开慢次数最少的一家,可见 各大互联网公司在技术的储备和运用上还是有差别的。
用户打开浏览器,输入网址,页面就加载出来。这简简单单的背后到底隐藏这什么怪兽,让各大互联网势力忙的不可开交?
首先请看一张图,这是在浏览器打开一个页面,浏览器都干了些什么的时间表,
在高级浏览器例如chrome,可以通过js脚本window.performance.timing 拿到这些数据,oneapm 的Browser Insight 就是以此为基础开发出来的
看着一堆英文,你一定晕了,其实我也晕了。
通常诊断网站打开慢,把这个时间表可以简单的分为3个过程,来进行分析就好了 ,每个过程都包含一些细节
1 网络链接的时间 (fetchStart-responseStart)
2 浏览器接受数据构建页面(responseStart-domContentLoadedEventStart)
3 页面加载资源并渲染页面(domContentLoadedEventStart-loadEventEnd)
分身兽
导致网站打开慢的第一只怪兽必然是 网络链接时间,互联网公司中土豪勉强和这只怪兽打个平手,其他互联网公司均早早鸣金收兵。
因为这只怪兽竟然会分身,首先分身为电信网络和联通网络,然后又都分身为全国34个行政区,如果有时候你觉得你打开网站速度很快,但是某些地区的用户打开网站很慢,那一定是这个地区的怪兽太强了~,对付这只怪兽通常用的武器
1 dns 加速 例如 dnspod,加速你在全国的域名解析速度
2 网站镜像,解决多线路互通的问题,例如 联通 电信 移动
3 cdn加速,让你的资源距离用户更近一些,打开速度自然更快
遗憾的是 这3招都是烧钱的,一口气全用上,不是土豪根本用不起,所以要分析清楚自己的访客群在哪,有的放矢的花点银子
幻化兽
导致网站打开慢的第二只怪兽 就是接受数据的速度,在解决第一只怪兽后,能影响接受数据速度的主要是服务器的响应时间,尤其是当用户量比较大,数据比较多,业务比较复杂的时候,这只怪兽竟然 会跟着幻化,例如高并发下的分布式事务锁(电商),海量数据的快速检索(搜索),图片、视频快速加载(多媒体)
和这头怪兽作战,主要是靠人才和常年累月的技术积累,各大互联网公司也只一致的,均采取拥抱开源+垄断人才的措施,这就是为什么最近几年应届毕业生的价码越来越高,垄断人才的战斗从这里就开始了。
分裂兽
导致网站打开慢的第三只怪兽是最近几年才出现,以前页面比较简单,承载的业务也单一,随着时间的推移,一个页面越来越大,业务越来越复杂,进而问题也就跟着来了。
这是一只分裂兽,这只怪兽通常喜欢和用户呆在一起,却你玩做迷藏的游戏,现在主要分裂为 ie、火狐、chrome、各大浏览器的移动版 和国产手机上的国产浏览器,国产的太复杂就不一一列举了。
这里一 新浪微博为例,微博登录后的首页,累计发起了281个请求用来加载各种各样的资源,一个简简单单的发微博的页面都是如此的复杂,更不用说大家平时用其他系统了。
这是错误日志
各大互联网公司在同分裂兽作战的过程中,胜多败少,这样的战绩,中小公司难以望其项背
原因如下
1 一个页面都加载这么多资源,一个站点N个页面加载的资源更多遇到的问题也会更多,可见和分身兽交战是多磨灿烈,没有大量的技术人才,和准确的分析,难有胜算,一线互联网公司因为在这一块有着丰富的积累,所以平手居多,你看新浪也是用了近 10秒才完成所有资源的加载。
2 对这些资源进行管理需要用到 前端工程师,而网页变的复杂也是最近几年的事情,前端工程师的培养有个过程,除了老牌互联网公司有技术储备和人才储备能够稳住阵脚,其他公司都是疲于应战例如 随便打QQ商城 http://www.wanggou.com/ 一个电子商务的首页, 就报js错误,至于这个错误影不影响业务,我就不清楚了
对js错误日志的收集和分析,也是一件复杂的事情,因为访问量越大,数据量越大,除了大公司,小公司做自己业务都人手不够,更不用说浏览器日志收集这些和业务无关的事情了。
服务器端可以随便打日志,看日志,而浏览器端只能闭着眼睛,猜!用户遇到什么故障了往往只有打电话吐诉后远程桌面,才能知道,效率十分低下。