首页 > 其他分享 >影响页面首屏加载时间的因素

影响页面首屏加载时间的因素

时间:2023-04-18 20:15:26浏览次数:28  
标签:文件 浏览器 JS 首屏 页面 CSS 加载

项目增加后,首屏加载就会出现白屏的问题,一般首屏加载时间最好在2秒以内,才能不影响使用体验

下面介绍下主要影响因素和解决办法:

一、网络问题:

  1)可能是由于网络厂商和服务器性能决定

  2)请求太多,由于浏览器并行请求在8个以下,超出的只能排队等待,所以如果请求太多,不仅增加了网络TCP连接时间还增加了等待时间

二、资源位置和大小

  1) 浏览器解析HTML文件是从上到下解析的,如果遇到资源文件就会暂停解析DOM,先下载文件,在文件执行完成后,继续解析DOM;

    如果CSS文件在最后,则在生成CSSOM后还会和DOM结合重新对页面进行渲染,增加性能消耗。

  2)基于第一点就要求CSS和JS文件不能太大,且JS文件对DOM操作较少,所以一般放在HTML最后,而CSS对页面渲染影响较大,所以放在文件上方。

三、解决办法

  1)CSS文件放在HTML页面最上方,JS文件放在最下方,避免出现重绘问题;

  2)通过webpack等打包工具压缩JS和CSS文件,如果项目模块较多,可以采用SplitChunksPlugin进行分包处理;

  3)懒加载JS和CSS,在首页只加载必要的渲染页面,其他文件通过懒加载方式引入;

  4)使用浏览器缓存机制将静态资源缓存到浏览器,加快加载速度;

  5)http请求个数不能太多,可以将多个数据请求合并成一个,针对小图片资源,可以采用一些工具生成一个大图片,通过坐标位置定位显示,能节省很多请求资源;

  6)CSS在写法上尽量使用ID和Class选择器,避免使用标签名等低优先级选择器方式;

四、性能分析软件

  Google浏览器的开发者工具自带了性能分析能力,打开F12,点击到Performance页签,然后

  1)点击小灰点1

  2)刷新浏览器

  3)页签转圈结束后点击屏幕stop,就产生性能报告了

  4)不同颜色的长条代表不同类型的耗时,条越长,耗时越长,也可以看页面左下角的总结分析

  5)下面是一个简单的延时录屏,没有开通会员,所以有些水印

 

 

标签:文件,浏览器,JS,首屏,页面,CSS,加载
From: https://www.cnblogs.com/codeOnMar/p/17316082.html

相关文章

  • pandas读取Excel核心源码剖析,面向过程仿openpyxl源码实现Excel数据加载
    今天我们将研究pandas如何使用openpyxl引擎读取xlsx格式的Excel的数据,并考虑以面向过程的形式简单的自己实现一下。截止目前本人所使用的pandas和openpyxl版本为:pandas:1.5.2openpyxl:3.0.10今天所有的测试全部基于以下文件:pandas的read_excel核心代码这里我使用pycharm工具对以下代......
  • vue不同页面方法调用|跨页面传参|事件总线
    事件总线需要在不同页面间传递参数或者进行方法调用,可以使用事件总线1.引入中间js在src下的Utils文件夹下创建一个Bus.js其内容如下importVuefrom'vue'exportdefaultnewVue()2.A页面(发起请求)importEventfrom'@/utils/Bus'Event.$emit('getlog',参数)3.B页面(......
  • npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本
    在新建项目时候遇到一个问题如上图,安装cnpm或者node都会报这个错误找了半天发现解决方法如下(操作如上图)1、打开终端2、在终端执行:get-ExecutionPolicy,显示Restricted(表示状态是禁止的)3、在终端执行:set-ExecutionPolicyRemoteSigned4、在终端执行:get-ExecutionPolicy,显示RemoteSig......
  • 为什么html页面不能显示标签el-checkbox的多选框,只有名称值
    问题描述我引入了el-checkbox之后,发现浏览器页面只是显示里面的文字,并没有显示出来我想要看到的相应样式问题解决经过一定的百度查证可知,使用Element-UI组件时,我们需要用div标签将其包裹起来;然后使用script标签定义一下div里面的id属性,然后才能够引用到这个el-标签,让其中的样......
  • 活字格性能优化技巧(3):如何巧用CDN提升含页面的访问速度
    本文由葡萄城技术团队于原创并首发转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 上两篇中我们分享了如何利用数据库主键和表格设置默认不加载数据来提升应用系统访问的性能。在本篇中一起来看看如何在活字格中利用CDN技术来提升页面的......
  • element-ui重载树列表(懒加载)
    在tree的:load方法中,将默认参数node,resolve两个参数存放到全局变量中;在对树节点进行操作后,对全局变量中的node.childNodes赋值为[空数组],最后重新调用tree的:load方法(参数为存放在全局的变量);代码如下:<el-treeref="tree2":props="props":load="loadNode"lazynode-key="l......
  • selenium爬取异步加载的网站
    为了便利化使用selenium驱动浏览器进行操作,遇到一个网页,大部分内容都是通过xhr请求后再通过前端js处理显示,带来的一个问题就是,采用显示等待无法准确的定位到需要的节点。因此,需要考虑采用判断xhr请求是否完成后再进行定位,或者直接获取xhr请求返回内容的做法。对于selenium爬虫来说,......
  • 使用导航条时,第一次能正常的打开页面,但是访问其他页面后就全部页面都访问不了,状态码30
     直接访问正常, 访问其他页面时其他页面显示不出来问题在于我设置了两个同级的div,div没有设置id以及class,我把两个div合并成一个之后就解决了问题 如图是解决前 以下是解决后,正常显示的情况说实话这问题的解决方法也确实蛮奇怪的,找到这个问题是因为另一端代码是搬运......
  • RequireJS 和 SeaJS 模块加载器
    RequireJS和SeaJS都是很不错的模块加载器,两者区别如下:1.两者定位有差异。RequireJS想成为浏览器端的模块加载器,同时也想成为Rhino/Node等环境的模块加载器。SeaJS则专注于Web浏览器端,同时通过Node扩展的方式可以很方便跑在Node服务器端2.两者遵循的标准有差异。Re......
  • LABjs异步加载组件
    加载外部js的方法大致有这么几种:方法说明XHREval     通过Ajax方式获取代码,并通过eval方式执行代码。XHRInjection     通过Ajax方式获取代码,并在页面上创建一个script元素,将Ajax取得的代码注入。ScriptinIframe      通过iframe加载js。Scr......