CSS页面首次加载白屏是怎么回事,怎样优化好
Admin 2022-06-10 群英技术资讯 1068 次浏览
含有外部 css 文件的渲染流水线
上图中,请求 HTML 数据和构建 DOM 中间有一段空闲时间,这段时间可能成为页面渲染的瓶颈。DOM 构建结束后,css 文件还未下载完成这段时间内,渲染流水线一直在等待,因为下一步是合成布局树。合成布局树需要 CSSOM 和 DOM,所以需要等待 CSS 加载结束并解析为 CSSOM。这种情况下,CSS 没有阻塞 DOM 的生成。
CSSOM 的作用
含有内联 JS 和 外部 CSS 页面的渲染流水线
从上图中可以看到,构建 DOM 过程中遇到 JS 会停止构建,去解析执行 JS,因为 JS 可能会修改当前 DOM。
在执行 JS 脚本之前,若页面中包含外部 css 或内联的 css,渲染引擎需要将他们提前转为 CSSOM,因为 JS 有修改 CSSOM 的能力,所以在 JS 执行前,还要依赖 CSSOM。 这意味着 CSS 在部分情况下也会阻塞 DOM 生成。
含有外部 JS 和 CSS 页面的渲染流水线
请求到的 HTML 数据在预解析过程中,检测到有外部 JS、CSS 文件需要下载,同时发起两个文件的下载请求,下载时间不是重叠的,是按照最久的那个来算。
不管 CSS,JS 谁先到达,都要先等到 CSS 文件下载并生成 CSSOM,然后执行 JS 脚本,最后构建 DOM、布局树、绘制页面。
影响页面展示因素及优化策略
从输入 URL 到页面首次展示的三阶段:
最影响用户体验的就是第二阶段,包括解析 HTML、下载 CSS、下载 JavaScript、生成布局树、绘制页面等操作。
优化策略
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
在一次项目中,有一次要用到::selection伪元素,然后开发同学问我,CSS中一个冒号和两个冒号有神马区别?这好像真的是个问题,或许很多前端同学对此都有疑惑,查了些资料,证实了下两个符号的区别,简而言之:单冒号(:)用于CSS3伪类,双冒号(::)用于CSS3伪元素。W3C关于CSS3选择器的规范中有一段描述:Apseudo-elementismadeoftwocolons
这篇文章主要介绍了HTML5 实现图片上传预处理功能,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友参考下吧
这篇文章主要介绍了HTML速写之Emmet语法规则的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
这篇文章主要介绍了使用css画一个文件上传图案效果,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友参考下吧
一般而言,鼠标以斜向上的箭头显示,移到文本上时变为有头的竖线,移到超级链接上变为手型。但用css可控制鼠标的显示效果,如可使鼠标移到普通文本上也显示成手型。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008