首页 > 其他分享 >影响浏览器页面展示的因素以及优化策略

影响浏览器页面展示的因素以及优化策略

时间:2024-01-02 23:34:59浏览次数:30  
标签:文件 浏览器 展示 JavaScript 阶段 白屏 CSS 页面

渲染流水线影响到了首次页面展示的速度,而首次页面展示的速度又直接影响到了用户体验,所以分析渲染流水线的目的就是为了找出一些影响到首屏展示的因素,然后再基于这些因素做一些针对性的调整。

那么接下来我们就来看看从发起 URL 请求开始,到首次显示页面的内容,在视觉上经历的三个阶段。

  • 第一个阶段,等请求发出去之后,到提交数据阶段,这时页面展示出来的还是之前页面的内容。
  • 第二个阶段,提交数据之后渲染进程会创建一个空白页面,我们通常把这段时间称为解析白屏,并等待 CSS 文件和 JavaScript 文件的加载完成,生成 CSSOM 和 DOM,然后合成布局树,最后还要经过一系列的步骤准备首次渲染。
  • 第三个阶段,等首次渲染完成之后,就开始进入完整页面的生成阶段了,然后页面会一点点被绘制出来。

影响第一个阶段的因素主要是网络或者是服务器处理这块儿。

第二个阶段,这个阶段的主要问题是白屏时间,如果白屏时间过久,就会影响到用户体验。为了缩短白屏时间,我们来挨个分析这个阶段的主要任务,包括了解析 HTML、下载 CSS、下载 JavaScript、生成 CSSOM、执行 JavaScript、生成布局树、绘制页面一系列操作。

通常情况下的瓶颈主要体现在下载 CSS 文件、下载 JavaScript 文件和执行 JavaScript。

所以要想缩短白屏时长,可以有以下策略:

  • 通过内联 JavaScript、内联 CSS 来移除这两种类型的文件下载,这样获取到 HTML 文件之后就可以直接开始渲染流程了。
  • 但并不是所有的场合都适合内联,那么还可以尽量减少文件大小,比如通过 webpack 等工具移除一些不必要的注释,并压缩 JavaScript 文件。
  • 还可以将一些不需要在解析 HTML 阶段使用的 JavaScript 标记上 sync 或者 defer。
  • 对于大的 CSS 文件,可以通过媒体查询属性,将其拆分为多个不同用途的 CSS 文件,这样只有在特定的场景下才会加载特定的 CSS 文件。

通过以上策略就能缩短白屏展示的时长了,不过在实际项目中,总是存在各种各样的情况,这些策略并不能随心所欲地去引用,所以还需要结合实际情况来调整最佳方案。


标签:文件,浏览器,展示,JavaScript,阶段,白屏,CSS,页面
From: https://blog.51cto.com/key3feng/9073587

相关文章

  • 【Azure APIM】在APIM中实现JWT验证不通过时跳转到Azure登录页面
    问题描述在APIM中配置JWT策略,验证JWT,如果认证失败,则跳转到AzureEntraID的Login页面。 问题解答要实现JWT验证失败后,跳转到AzureEntraID的Login页面。需要使用到两种策略:validate-jwt:https://learn.microsoft.com/en-us/azure/api-management/validate-jwt-policyretu......
  • javafx中PDF文件的展示(转图片)
    try{//加载pdf文件PDDocumentdocument=PDDocument.load(file);//将pdf转换成图片PDFRendererrenderer=newPDFRenderer(document);//获取pdf的页数intnumberOfPages=document.getNumberOfPages();PDFRendererpdfRenderer=newPDF......
  • 浏览器使用隧道代理HTTP:洞悉无界信息
    在信息爆炸的时代,互联网已经成为获取信息的首选渠道。然而,在某些地区或情况下,访问某些网站可能会受到限制。这时,隧道代理HTTP便成为了一个重要的工具,帮助用户突破限制,洞悉无界信息。一、隧道代理HTTP的原理与优势隧道代理HTTP是一种网络通信方式,通过建立一条虚拟的通信隧道,用户可以......
  • 彻底取消unigui的/server页面及扩展应用(78)
    unigui的应用默认会在/server显示相关信息,unigui编译的应用能不能简单设置就可以取消/server页面?经验证,在UniServerModule.UniGUIServerModuleHTTPCommand拦截/server就可以取消server页面:procedureTUniServerModule.UniGUIServerModuleHTTPCommand(ARequestInfo:TIdHTTPRequ......
  • 浏览器文档对象模型是如何生成的
    从网络传给渲染引擎的HTML文件字节流是无法直接被渲染引擎理解的,所以要将其转化为渲染引擎能够理解的内部结构,这个结构就是DOM。DOM提供了对HTML文档结构化的表述。在渲染引擎中,DOM有三个层面的作用。从页面的视角来看,DOM是生成页面的基础数据结构。从JavaScript脚本视角......
  • 鸿蒙自定义弹窗中的变量如何传递给页面
    鸿蒙自定义弹窗中的变量如何传递给页面作者:坚果团队:坚果派公众号:“大前端之旅”团队介绍:坚果派由坚果创建,团队拥有8个华为HDE,3个HSD,以及若干其他领域的三十余位万粉博主运营。本人为华为HDE、中国计算机学会CCF专业会员、OpenHarmony布道师、开发者联盟优秀讲师、2023年开源之夏......
  • Apple Safari 16.5 发布- macOS 专属浏览器 (独立安装包下载)
    AppleSafari16.5-macOS专属浏览器(独立安装包下载)Safari浏览器16formacOSMontery,BigSur作者主页:sysin.org之前Safari浏览器伴随macOS更新一起发布,需要系统更新才能体验到新版,现在库克终于带来了独立安装包,无需更新系统也可感受最新的卓越Web体验。当今世界是......
  • 页面结构据不同屏幕手机大小进行自适应+底部标签
    微信小程序请简单创建一个页面结构,要求页面结构根据不同屏幕手机大小进行自适应。<!--pages/test/test.wxml--><viewclass="tab">顶部区域</view><viewclass="content">内容区域</view><viewclass="player">底部区域</view>/* p......
  • 【原创】一款AI Agent浏览器插件,让你在任意页面、任意地方使用大模型能力
    介绍赐我白日梦AIAgent,一款可以让你在任意浏览器页面使用大语言模型的插件神器。视频讲解https://www.bilibili.com/video/BV17T4y1W7YP/?vd_source=ff5ff1551c3f08b3759567d6405cf747核心功能曜夜黑主题UI页面:支持切换大模型:本地化存储大模型的AK、SK:支持自定义功能......
  • (selenium) 让浏览器在 webdriver 调用后保持打开状态
    在使用selenium进行webdriver测试时,浏览器在调用完后将会自动关闭,即使没有调用"driver.close()"。有时候,可能需要特意将浏览器保持开启状态,此时需要使用detach参数#'detach'=True将不会自动关闭options.add_experimental_option('detach',True)具体示例代码如......