前端性能优化之白屏时间

定场诗

曲木为直终必弯,养狼当犬看家难;
墨染鸬鹚黑不久,粉刷乌鸦白不天。
蜜饯黄莲终需苦,强摘瓜果不能甜;
好事总得善人做,哪有凡人做神仙。

前言

该篇文章会为您分享在前端性能优化中非常重要的一环-白屏时间,将从白屏时间的概念、重要性以及白屏的过程一一进行阐述,同时提供性能优化的策略与实践。

一、概念

白屏时间:即用户点击一个链接或打开浏览器输入URL地址后,从屏幕空白到显示第一个画面的时间。

白屏时间的长短将直接影响用户对该网站的第一印象。

二、白屏时间的重要性

当用户点开一个链接或者是直接在浏览器中输入URL开始进行访问时,就开始等待页面的展示。页面渲染的时间越短,用户等待的时间就越短,用户感知到页面的速度就越快。这样可以极大的提升用户的体验,减少用户的跳出,提升页面的留存率。

打开一个页面就像你的女票召唤你一样,你出现的越迅速,女票肯定会愈加欣喜!反之,你千呼万唤始出来,那么你的女票很可能又要抛弃你了(为什么要对你说又呢? ...)

三、白屏是一个怎样的过程呢?

让我们一起来揭秘:从打开一个页面,到页面的画面展示经历了怎样的过程!

1. DNS Lookup

DNS Lookup 即浏览器从DNS服务器中进行域名查询。

浏览器会先对页面进行域名解析,获取到服务器的IP地址后,进而和服务器进行通信。

Tips: 通常在整个加载页面的过程中,浏览器会多次进行DNS Lookup,包括页面本身的域名查询以及在解析HTML页面时加载的JS、CSS、Image、Video等资源产生的域名查询。

2. 建立TCP请求连接

浏览器和服务端TCP请求建立的过程,是基于TCP/IP,该协议由网络层的IP和传输层的TCP组成。IP是每一台互联网设备在互联网中的唯一地址。

TCP通过三次握手建立连接,并提供可靠的数据传输服务。

3. 服务端请求处理响应

在TCP连接建立后,Web服务器接受请求,开始进行处理,同时浏览器端开始等待服务器的处理响应。

Web服务器根据请求类型的不同,进行相应的处理。静态资源如图片、CSS文件、静态HTML直接进行响应;如其他注册的请求转发给相应的应用服务器,进行如数据处理、缓存中取数据,将数据按照约定好的格式响应给浏览器。

在大型应用中,通常为分布式服务架构,应用服务器的处理有可能经过很多个系统的中间件,最终获取到需要的数据

4. 客户端下载、解析、渲染显示页面

在服务器返回数据后,客户端浏览器接收数据,进行HTML下载、解析、渲染显示。

  • a. 如果是Gzip包,则先解压为HTML
  • b. 解析HTML的头部代码,下载头部代码中的样式资源文件或脚本资源文件
  • c. 解析HTML代码和样式文件代码,构建HTML的DOM树以及与CSS相关的CSSOM树
  • d. 通过遍历DOM树和CSSOM树,浏览器依次计算每个节点的大小、坐标、颜色等样式,构造渲染树
  • e. 根据渲染树完成绘制过程

浏览器下载HTML后,首先解析头部代码,进行样式表下载,然后继续向下解析HTML代码,构建DOM树,同时进行样式下载。当DOM树构建完成后,立即开始构造CSSOM树。理想情况下,样式表下载速度够快,DOM树和CSSOM树进入一个并行的过程,当两棵树构建完毕,构建渲染树,然后进行绘制。

Tips:浏览器安全解析策略对解析HTML造成的影响:

  • 当解析HTML时遇到内联JS代码,会阻塞DOM树的构建
  • 特别悲惨的情况: 当CSS样式文件没有下载完成时,浏览器解析HTML遇到了内联JS代码,此时!!!根据浏览器的安全解析策略,浏览器暂停JS脚本执行,暂停HTML解析。直到CSS文件下载完成,完成CSSOM树构建,重新恢复原来的解析。

    一定要合理放置JS代码!!!

四、白屏-性能优化

至此,我们已经了解了从浏览器在打开一个链接开始,到屏幕展示的过程-白屏时间的历程,那这对每个环节中发生的事情,我们可以有针对性的进行相关的优化。

1. DNS解析优化

针对DNS Lookup环节,我们可以针对性的进行DNS解析优化。

  • DNS缓存优化
  • DNS预加载策略
  • 稳定可靠的DNS服务器

2. TCP网络链路优化

针对网络链路的优化,好像除了花钱没有什么更好的方式!

3. 服务端处理优化

服务端的处理优化,是一个非常庞大的话题,会涉及到如Redis缓存、数据库存储优化或是系统内的各种中间件以及Gzip压缩等...

4. 浏览器下载、解析、渲染页面优化

根据浏览器对页面的下载、解析、渲染过程,可以考虑一下的优化处理:

  • 尽可能的精简HTML的代码和结构
  • 尽可能的优化CSS文件和结构
  • 一定要合理的放置JS代码,尽量不要使用内联的JS代码

声明

本文为胡哥拜读周涛明、张荣华、张新兵几位大佬所著《大型网站性能优化实战》一书并结合自身经验所得,愿对诸位小伙伴有所帮助。手动微笑.gif

后记

以上就是胡哥今天给大家分享的内容,喜欢的小伙伴记得收藏转发、点击右下角按钮在看,推荐给更多小伙伴呦,欢迎多多留言交流...

胡哥有话说,一个有技术,有情怀的胡哥!京东开放平台首席前端攻城狮。与你一起聊聊大前端,分享前端系统架构,框架实现原理,最新最高效的技术实践!

长按扫码关注,更帅更漂亮呦!关注胡哥有话说公众号,可与胡哥继续深入交流呦!

胡哥有话说

### 回答1: 白屏时间是指用户在打开网页后,直到看到页面内容之间的时间间隔。要减少白屏时间,可以采用以下方法:1.减少图像文件的大小;2.使用 CDN 加速;3.优化 JavaScript 和 CSS 代码;4.使用浏览器缓存;5.对网页进行懒加载等。 ### 回答2: 前端性能优化是指通过一系列的调整和优化,提高网页的加载速度和响应速度,提升用户体验。其中减少白屏时间是一项重要的优化目标。 白屏时间是指页面打开后用户看到内容的时间间隔。通常情况下,用户打开页面后,由于网络请求、资源加载等原因,会有一段时间页面处于空白状态,这段时间即为白屏时间减少白屏时间可以提升用户的感知速度,使用户更快地看到页面内容。 减少白屏时间的方法有以下几种: 1. 减少页面的加载时间:通过优化页面结构、合理使用CSS和JavaScript前端技术,减少页面的大小和请求个数,从而加快页面加载速度。 2. 预加载关键资源:提前加载页面需要的关键资源,比如CSS、JavaScript、图片等,可以通过使用预加载的方式,使这些资源在页面打开前就开始加载,从而减少白屏时间。 3. 使用缓存:利用浏览器的缓存机制,将页面需要的静态资源缓存到本地,下次访问时可以直接从缓存中获取,减少网络请求的时间。 4. 懒加载:仅加载当前可见区域内的内容,延迟加载其他内容,在用户滚动页面时再加载。这样可以减少页面首次加载的资源量,提高页面加载速度。 5. 提前获取数据:如果页面需要从后端获取数据,可以在页面加载时就开始请求数据,然后在渲染页面时直接使用已获取的数据,减少用户等待数据响应的时间,缩短白屏时间。 综上所述,通过适当的优化措施,可以有效减少白屏时间,提升前端性能,提高用户体验。 ### 回答3: 前端性能优化是指通过各种方法和技术来提高网页加载和交互的速度和效率,其中之一就是减少白屏时间白屏时间是指用户在打开网页时,页面内容出现之前的等待时间。在这个过程中,用户会感觉到页面没有任何反应,导致用户体验下降。 为了减少白屏时间,我们可以采取以下几种策略: 1. 压缩和合并资源文件:将CSS和JavaScript文件进行压缩和合并,减少HTTP请求和传输时间,从而提高加载速度。 2. 使用浏览器缓存:合理设置缓存策略,使相同的资源可以从缓存中获取,避免重复请求,减少加载时间。 3. 异步加载资源:将非关键资源(如广告、统计代码等)的加载放在页面内容加载完毕后进行,以保证页面内容的快速呈现。 4. 延迟加载图片:将页面上的图片设置为延迟加载,只有在用户滚动到可见范围时才进行加载,避免一次性请求过多的图片,提高加载速度。 5. 使用CDN加速:将静态资源部署到全球各地的CDN节点上,利用就近访问的优势,减少网络延迟,加快资源加载速度。 6. 懒加载:只加载当前可见区域的内容,将其他内容延迟加载,延迟加载可以提高页面的加载速度,减少白屏时间。 7. 优化首屏渲染:将关键资源和内容放在页面的最前面,提高首屏的加载速度,使用户能够更快地看到页面内容。 通过以上的优化策略,可以有效地减少白屏时间,提高网页的加载速度和用户的体验。但需要注意的是,在优化的过程中,要综合考虑兼容性、用户体验等因素,避免影响网页的功能和可用性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值