前端优化系列 - 首次显示的性能影响分析

二叶草 2020年2月4日22:10:51优化评论阅读模式

对于前端开发者来说,页面打开的速度是影响用户体验的一个重要因素。据统计,用户打开一个页面,如果超过1秒钟页面没有任何内容显示的话,用户将会离开这个页面。而数据表明,即使在资源有缓存的情况下,页面首次访问的耗时也是非首次访问的两倍。为什么首次访问这么耗时呢,时间去哪里了?本文详细分析页面首次访问耗时的原因。本文主要面向前端开发者,因此,呈现页面的载体应用则不在本文范围之内。本文希望能对前端开发者优化页面首次显示速度带来帮助。

ServiceWorker初始化

 

ServiceWorker是PWA的关键技术,它具有非常强大的能力,Fetch,Cache,Push和Add to home screen,能让前端开发者非常灵活的操控页面缓存。同时,它也是有比较大的初始化成本的,比如,ServiceWorker线程启动平均要200ms,而每次访问页面,一般ServiceWorker线程至少都需要启动一次。当然,我们的内核也在不断优化这块的耗时,最终预计能优化到100ms以内。
后面我们会陆续推出PWA系列的相关文章,敬请读者关注。

网络初始化

 

在网络初始化方面,一般内核网络库的初始化并不太耗时,耗时的是DNS和Connection。用户首次访问,一般都需要去进行DNS解析和创建连接,而在后续访问时,一般都可以用上缓存或者预连接。DNS解析一般耗时在200ms以上,创建HTTP连接一般耗时也在200ms以上,而创建HTTPS连接则需要600ms以上。也就是说,用户首次访问时,如果不能提前创建连接,从性能的角度来说,是非常危险的。
这个方面我们的建议是,使用HTTPDNS提前解析和缓存DNS,提前创建连接(比如,用户点击时)。客户端也有这方面的优化,比如,在加载主文档时,提前发起子资源的预连接,但在一些托管网络库的应用来说,这些策略可能不会生效。

服务器初始化

 

页面服务器和资源服务器,是否也需要初始化呢?一般也是需要的,比如页面访问过之后,页面服务器也会有一些缓存,用户再次访问时可以直接使用缓存而无需走完整的流程。但这些缓存应该是大部分用户都能共享的,所以实际影响不好评估。资源服务器也一样,例如图床,很多是按用户手机屏幕和网络类型来返回不同图片的,用户访问过就会放到CDN缓存中。
暂时未有数据表明服务器初始化对页面整体性能产生明显影响。

JS初始化

 

这里提到的JS初始化,并不是JS引擎相关的初始化。JS初始化是指JS文件缓存到httpcache和解析编译生成V8 Cache文件。很多数据表明,JS解析编译占JS耗时的35%以上,一些有巨型JS的页面甚至可以达到80%。在U4内核中,一般JS执行一次之后,就可以生成V8 Cache,虽然V8 Cache可以重复使用,但也存在被自动清理的情况,所以提前执行一次还是有收益的。
一些业务中,提前执行一次JS,在用户真实访问时,耗时从500ms降到200ms。特别是在一些超级App中,基础JS基本都一样,提前执行一次可能会带来非常明显的收益。

结束语

上面介绍了一些常见的初始化对页面性能的影响,希望读者能了解到一些隐藏的信息,能开阔Web优化的思路。当然,这些点不一定会存在很大的性能问题,比如,一些业务模块处理的非常好的App,在业务初始化方面不一定会有性能问题,需要根据自己的实际场景,具体问题具体分析。 

 

本文来源于:前端优化系列 - 首次显示的性能影响分析-变化吧门户
特别声明:以上文章内容仅代表作者本人观点,不代表变化吧门户观点或立场。如有关于作品内容、版权或其它问题请于作品发表后的30日内与变化吧联系。

在寻找靠谱的建站服务?

提供建站全方位托管服务,告诉我你的需求,剩下的交给我帮你处理,建站过程中碰到的任何小问题免费处理,网站所有数据由你自己掌握,还提供网站SEO指导,犹豫什么呢?联系我吧。

 

  • 赞助本站
  • 微信扫一扫
  • weinxin
  • 加入Q群
  • QQ扫一扫
  • weinxin
二叶草
nginx解析漏洞 优化

nginx解析漏洞

phpstudy(小皮模板存在nginx解析漏洞) 影响版本 phptsuy8.1.07的Nginx1.5.11版本影响版本 phptsuy8.1.07的Nginx1.5.11版本 phpstudy介...
网站SEO优化基础流程(新手必看) 优化

网站SEO优化基础流程(新手必看)

宝塔面板搭建一个获取网站的Favicon图标的APIgetFavicon是一个可以获取网站的Favicon图标并显示在你的网页上的项目。安装方法很简单,属于开箱即食。这篇文章还是基于宝塔面板来搭建。 ...

发表评论