前言

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

一、概念

白屏时间:即用户点击一个链接或打开浏览器输入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代码!!!

电脑刺绣绣花厂 http://www.szhdn.com 广州品牌设计公司https://www.houdianzi.com

四、白屏-性能优化

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

1. DNS解析优化

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

DNS缓存优化

DNS预加载策略

稳定可靠的DNS服务器

2. TCP网络链路优化

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

3. 服务端处理优化

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

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

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

尽可能的精简HTML的代码和结构

尽可能的优化CSS文件和结构

一定要合理的放置JS代码,尽量不要使用内联的JS代码

前端白屏问题_前端性能优化之白屏时间相关推荐

  1. web前端开发,如何提高页面性能优化?

    web前端开发,如何提高页面性能优化? 内容方面 减少HTTP请求次数 减少DOM操作 减少DNS查询 使用Ajax 可缓存 css方面 把css样式HTML代码页的上端 从页面中分离css代码,从外 ...

  2. 服务器显示屏出现白屏,前端性能优化之白屏时间

    定场诗 曲木为直终必弯,养狼当犬看家难: 墨染鸬鹚黑不久,粉刷乌鸦白不天. 蜜饯黄莲终需苦,强摘瓜果不能甜: 好事总得善人做,哪有凡人做神仙. 前言 该篇文章会为您分享在前端性能优化中非常重要的一环- ...

  3. 前端重构实践(一) —— 性能优化

    前言: 最近一直在做性能优化和模块化改造的工作,并完成了一次前端重构.在这里总结出一些经验和得失来帮助大家思考.共两篇文章,第一篇讨论性能优化,第二篇讨论模块化框架.而之所以把这两个话题放到一起,是因 ...

  4. 前端基于浏览器存储的AJAX性能优化

    受后端开发redis启发,基于浏览器sessionStorage存储的ajax性能优化. 一.需求 随着单页面和前后端分离的兴起,ajax已经成为大部分前后端数据交互的途径.虽然ajax是异步的,但是 ...

  5. 「性能优化」首屏时间从12.67s到1.06s,我是如何做到的?

    --本文是对之前同名文章的修正,将所有webpack3的内容更新为webpack4,以及加入了笔者近期在公司工作中学习到的自动化思想,对文章内容作了进一步提升. 0.引言 作为互联网项目,最重要的便是 ...

  6. 前端改变div排序_前端面试经常问到的问题

    CSS 1.盒模型 2.flex 3.css单位 4.css选择器 5.bfc 清除浮动 6.层叠上下文 7.常见页面布局 8.响应式布局 9.css预处理,后处理 10.css3新特性 animat ...

  7. ue4渲染速度太慢_[UE4]性能优化指南(程序向)

    封面来源:A Cold Stop(Mixer 制作材质.UE4渲染 ) [UE4]性能优化指南(美术向)玄冬Wong:[UE4]性能优化指南(美术向)​zhuanlan.zhihu.com 内容都是处 ...

  8. numa节点_鲲鹏性能优化十板斧之前言 | 鲲鹏处理器NUMA简介与性能调优五步法

    鲲鹏处理器NUMA简介 随着现代社会信息化.智能化的飞速发展,越来越多的设备接入互联网.物联网.车联网,从而催生了庞大的计算需求.但是功耗墙问题以功耗和冷却两大限制极大的影响了单核算力的发展.为了满足 ...

  9. java前端接口怎么写_前端接口怎么写

    1.java后台怎么写接口给前端使用 java后台如何给前端写使用接口,框架一开始就得考虑好的,很多都使用mvc架构往往用户登录时,用户密码符合,会允许其访问,保存登录信息,下次就不需要再次登录了,直 ...

最新文章

  1. 以下不属于计算机安全术语,基础知识(D).doc
  2. Spring Boot最新版集成邮件发送功能大全
  3. IP互动电视的坚强后盾
  4. IDEA高级玩法:集成JIRA、UML类图插件、SSH、FTP、Database管理...
  5. 【老生谈算法】matlab实现模糊数学模型源码——模糊数学模型
  6. 存储大师新作,三星存储四大新品面世!
  7. CxImage 使用报错解决办法
  8. 图像复原方法综述(扫盲)
  9. 基于C语言开发的教师管理系统
  10. 国家区域代码关系整理
  11. php大写转为小写,PHP 大小写转换函数 lcfirst ucfirst ucwords strtolower
  12. P2807 三角形计数(c++)
  13. node.js仿知乎
  14. 消防工程师 1.1 消防给水及设施(2)
  15. 微信小程序云函数不开本地调试无法运行
  16. EXCEL(Power BI)获取天天基金网每日历史净值数据,我去,这也太简单了吧!
  17. AdapterView之ListView简介
  18. 我是怎样使用BoundsChecker的
  19. 联邦学习实战-1:用python从零开始实现横向联邦学习
  20. [问题已解决]你申请的名称指向特定地域范围或地理名称,请提供相应资料证明可使用该地域范围或地理名称作为帐号名称

热门文章

  1. PLC是怎么工作和扫描的
  2. 【论文阅读】7-Discovering Structural Regularity in 3D Geometry
  3. Origin 2017调整画布和图表的尺寸大小
  4. 夜光带你走进python开发 (十七)传奇语言
  5. eve-ng模拟器安装在部署使用
  6. 统计学中的真阳性(TP),假阴性(FN),假阳性(FP),真阴性(TN)怎么理解?
  7. html datatable修改行,DataTable根据条件修改行颜色和特定格颜色
  8. yxc_第二章 数据结构(二)_Trie树
  9. php 数字上下选取,PHP中常见的数字掐头去尾操作方法
  10. python爬虫可视化excel_Python爬虫以及数据可视化分析!