【优化】前端性能优化---计算首屏加载时间和首屏加载速度慢怎么解决?

4 篇文章 0 订阅
订阅专栏
3 篇文章 0 订阅
订阅专栏

1. 什么是首屏加载时间?

首屏加载时间,指的是浏览器从相应用户输入网址,到首屏内容渲染完成的时间,此时整个网页不一定全部渲染完成,但需要展示当前视窗需要的内容。

计算首屏加载时间公式:
times = (performance.timing.domComplete - performance.timing.navigationStart) / 1000
百度首屏加载时间
performance对象的内容
performance对象的内容

performance.getEntries() //获取每个资源的加载时间-针对大的优化

2. 首屏加载速度慢怎么解决?

2.1 减少入口文件体积

常用的手段是路由懒加载,只有在解析路由才会加载相应的组件

const routes = [
  {
    path: "blogs",
	name: "blogs",
	component: () => import('./components/blog.js')
  }
];

2.2 静态资源本地缓存

后端返回的资源:采用http缓存
前端合理利用localStorage
CDN静态资源缓存

2.3 UI框架按需加载

在日常使用的UI框架,例如element-UI,antd,我们按需引入:

import { Button } from 'antd';

2.4 避免组件重复打包

假设A.js文件是一个常用的库,现在有多个路由使用A.js文件,这样就造成重复下载。

解决方案:
在webpack的config文件中,修改CommonsChunkPlugin的配置minChunks:2
minChunks为2会把使用2次及以上的包抽离出来,放进公共的依赖文件中,避免了重复加载组件。

2.5 图片资源压缩

图片资源虽然不在编码过程中,但是它对页面加载速度影响较大。对于所有的图片资源,可以进行适当的压缩。
对于页面上的icon,可以使用在线字体图标,或者使用雪碧图将众多小图标合并到一张图上,以减少http请求的压力。

雪碧图被运用在众多使用了很多小图标的网站上。相对于把每张小图标以.png格式文件的形式引用到页面上,使用雪碧图只需要引用一张图片,对内存和带宽更加友好。

使用雪碧图的优点有以下几点:

  1. 将多张图片合并到一张图片中,可以减小图片的总大小

  2. 将多张图片合并到一张图片后,只需一次网络请求就可以将所需的资源全部下载,减小建立连接的消耗,在移动端尤为明显

雪碧图的制作与使用方法:

  1. 使用图像编辑软件如Photoshop将多张图放到同一个图层并导出或使用自动化构建工具自动拼接合并后的图片

  2. 引用图片时,图片地址为合并后的图片地址,通过background-position调整背景图的位置,并通过容器的宽高共同作用,来选出所需的图片

注意:

在HTTP2中,已经不需要考虑减少请求数,故雪碧图在HTTP2中优化性能的意义已经不大

2.6 开启gzip压缩

拆包之后,可以再使用gzip做一下压缩,安装compression-webpack-plugin
在webpack中配置压缩

const CompressionWebpackPlugin = require('compression-webpack-plugin');
const productionGzipExtensions = ['js','css'];

// 配置compression-webpack-plugin压缩
new CompressionWebpackPlugin({
	algorithm:'gzip',
	test: new RegExp('\\.(' + productionGzipExtensions.join('|') + ')$'),
	threshold: 10240,
	minRatio: 0.8
});
docker部署前端项目(二)遇到的问题
weixin_45379180的博客
04-25 339
原因: 安装docker的时候使用的是 yum -y install docker 命令,这个命令安装的是老版本。报错四:conflicts with file from package docker-common。因为使用 sudo yum install docker (下载到的是旧版)missing signature key 缺少秘钥。yum remove docker 删除docker。1、docker版本号 只有1.13.1。解决:可能是docker 未启用。
应用篇 1:优化首屏体验——Lazy-Load 初探(2).md
04-01
前端性能优化实践# 知识体系与小册格局 ## 写给读者 提起性能优化,大家现在脑海里第一时间会映射出什么内容呢? 可能是类似[“雅虎军规”](https://developer.yahoo.com/performance/rules.html?guccounter=1)和[《高性能 JavaScript》](https://book.douban.com/subject/5362856/)这样历久弥香的经典之作,也可能是搜索引擎聚合给你的一篇又一篇以性能优化为主题的个人或团队实践而来的“私货”。至少当我确定自己的研发方向、并接到第一个性能优化任务时,我做的第一件事是向搜索引擎求助,第二件事是买书,然后开始了摸着石头过河,前后花费了大量的时间和精力。我深感性能优化实在是前端知识树中特别的一环——当你需要学习前端框架时,文档和源码几乎可以告诉你所有问题的答案,当你需要学习 Git 时,你也可以找到放之四海皆准的实践方案。但性能优化却不一样,它好像只能是一个摸索的过程。 这个摸索的过程是痛苦的、漫长的,也是紧要的。因为在如今的互联网环境下,一个前端团队如果只把性能优化这个任务写在纸上,而不投入实践,它将缺失最基本的竞争力。 笔者写这本小册,是希望通过短短十数个章节的讲解,尽可能降低一些大家学习性能优化的成本。 一方面,这本小册为没有接触过性能优化的新同学建立起一个正确的前端性能优化的“世界观”,知道性能优化是什么、为什么、怎么做,从而使性能优化这件事情有迹可循,有路可走。这样在面试现场被问到性能优化层面的问题时,能够做到滔滔不绝、言之有物,而非像背书一样罗列干巴巴的知识点,最终淹没在茫茫的求职大军中。另一方面,小册可以为在职的工程师们提供一线团队已经实践过的“方法论”,知道什么场景下该做什么事情,最终在脑海中留下一张涵盖核心原理和实践的、可随时查阅并且高度可扩展的性能优化思路索引表。然后在今后的开发生活中可以去践行它,更进一步去挖掘它。把性能优化变作你前端工程师生涯的一门必修课,进而演化为自己研发方面的核心竞争力。 同时,相信大家可以明确这样一个学习观念:任何技术的掌握,都离不开一定比例的理论基础和实际操作的支撑。 具体到前端性能优化这件事情上,我认为它是 20% 的理论,加上至少 80% 的实践,甚至很多理论本身也都是我们在具体的业务场景中实践出来的。所以希望大家阅读本小册时,能够读到一些“书本之外的东西”——最好是一边读一边回忆自己既有的开发经历,尝试去留意哪些知识是已知的,哪些是未知的。 这样读完之后,就可以有的放矢地把这些知识转换为自己的项目实践——前端技术日新月异,性能方案永远都在更迭,所以一定要形成自己的学习思路。 建议每一位读者都带着“学了就要用”的心态去读这本小册。如果阅读结束,能够为你带来哪怕一个小小的开发习惯或者优化观念上的改变,这数小时的阅读时间就算没有白费。 ## 知识体系: 从一道面试题说起 在展开性能优化的话题之前,我想先抛出一个老生常谈的面试问题: > 从输入 URL 到页面加载完成,发生了什么? 这个问题非常重要,因为我们后续的内容都将以这个问题的答案为骨架展开。我希望正在阅读这本小册的各位可以在心里琢磨一下这个问题——无须你调动太多计算机的专业知识,只需要你用最快的速度在脑海中架构起这个抽象的过程——我们接下来所有的工作,就是围绕这个过程来做文章。 我们现在站在性能优化的角度,一起简单地复习一遍这个经典的过程:首先我们需要通过 DNS(域名解析系统)将 URL 解析为对应的 IP 地址,然后与这个 IP 地址确定的那台服务器建立起 TCP 网络连接,随后我们向服务端抛出我们的 HTTP 请求,服务端处理完我们的请求之后,把目标数据放在 HTTP 响应里返回给客户端,拿到响应数据的浏览器就可以开始走一个渲染的流程。渲染完毕,页面便呈现给了用户,并时刻等待响应用户的操作(如下图所示)。 ![](https://user-gold-cdn.xitu.io/2018/10/18/16685737b823244c?w=489&h=329&f=png&s=19023) 我们将这个过程切分为如下的过程片段: 1. DNS 解析 2. TCP 连接 3. HTTP 请求抛出 4. 服务端处理请求,HTTP 响应返回 5. 浏览器拿到响应数据,解析响应内容,把解析的结果展示给用户 大家谨记,我们任何一个用户端的产品,都需要把这 5 个过程滴水不漏地考虑到自己的性能优化方案内、反复权衡,从而打磨出用户满意的速度。 ## 从原理到实践:各个击破 我们接下来要做的事情,就是针对这五个过程进行分解,各个提问,各个击破。 具体来说,DNS 解析花时间,能不能尽量减少解析次数
SPA(单页应用)首屏加载慢的优化方案
温情
05-11 2011
一. 什么是首屏加载时间首屏加载时间是指浏览器从相应用户输入网址到首屏内容渲染完成的时间。 整个网站并不需要全部加载完成,但需要展示当前可视窗口中的内容,也就是首屏。 从用户的角度来说就是:“输入网址到看到页面具体内容的速度”。 首屏加载时间可以说是用户体验中最重要的环节。 二. 查看我们应用的首屏加载时间? 通过 window 下面的一个api performance 计算 performance 对象中可以获取到当前页面与性能相关的信息 我们打印看一下 performance 对象 //
前端性能优化知识图谱指导
07-21
JS性能优化是指在JavaScript代码的编写和执行过程中,通过一系列的优化策略和技术手段,提高代码的执行效率和性能,从而提升网页或应用程序的响应速度和用户体验。 优化JS性能的方法包括但不限于以下几个方面: 代码优化:通过减少不必要的计算、避免重复操作、合并代码等方式来简化和优化代码,减少不必要的性能消耗。 减少网络请求:通过合并和压缩JavaScript文件,减少网络请求的次数和文件大小,提高页面加载速度。 避免全局变量:全局变量的使用会增加作用域链的查找时间,应该尽量避免过多的全局变量定义,尽量使用局部变量。 避免频繁的DOM操作:DOM操作是一项相对耗时的操作,频繁的DOM操作会导致性能下降,应该尽量减少DOM操作的次数,可以通过缓存DOM元素、批量操作等方式来提高性能。 使用事件委托:事件委托可以将事件绑定到父元素上,通过事件冒泡机制来处理子元素的事件,减少事件绑定的次数,提高性能。 合理使用定时器:定时器的使用会占用浏览器的计算资源,应该避免过多的定时器的使用,合理设置定时器的间隔和使用场景。 使用异步加载:通过异步加载脚本文件、图片等资源,可以提高页面的
实战剖析-vue项目首屏加载时长优化
京东科技开发者
04-22 702
首屏速度是用户体验的最关键一环,而首屏速度最大的决定性因素就是资源的加载速度,资源加载速度等于资源大小 + 网速,老的前端项目随着不断增长,代码可能会变得混乱,冗余难以理解,不断的做加法,久而久之,前端性能上就会受到影响,相信大家在工作当中一定遇到,页面加载时间慢,响应时间长等问题,本文将以具体项目为例(vue 2.51.7 webpack:4.23.1),一点一点分析,通过实战的角度,介绍如何对Vue项目的首屏加载时间进行优化。作为一只资深笨鸟,对大佬的思路领悟只有一二成,用最笨的方法,一条一条排查😬。
前端性能首屏时间查看
蛋蛋老公的博客
12-09 937
//主要看timing里的数据 console.log(window.performance) console.table(window.performance.timing) console.log('准备新页面时间耗时: ' + timing.fetchStart - timing.navigationStart); console.log('redirect 重定向耗时: ' + timing.redirectEnd - timing.redirectStart); console
前端性能指标:白屏和首屏时间计算
HanpengChen的博客
04-16 4334
作者:Hanpeng_Chen 公众号:前端极客技术 文章首发个人博客:前端性能指标:白屏和首屏时间计算|代码视界 前言 页面性能优化前端开发中一个重要的环节,而评判前端性能的优劣有两个比较经常听说的指标:白屏时间首屏时间。 接下来我们一起来看看什么是白屏时间首屏时间,如何去计算。 什么是白屏和首屏时间 白屏时间(FP) 白屏时间(First Paint):是指浏览器从响应用户输入网址地址,到浏览器开始显示内容的时间。 白屏时间 = 页面开始展示的时间点 - 开始请求的时间首屏时间(FC.
首屏加载时间过长?首屏白屏问题解决?打包文件体积过大优化
Holly31的博客
05-16 793
2.在webpack打包的过程中,将多余文件去掉,如不生成map文件,即在config/index.js中将productionSourceMap的值修改为false,就可以在编译时不生成.map文件了。5)异步加载js,async是JavaScript下载完成,就会立即执行代码,等待执行完之后才继续解析HTML。4.gzip压缩:前端配置gzip压缩,并且服务端使用nginx开启gzip,用来减小网络传输的流量大小。5.不要滥用第三方库,用到一个功能点整个第三方全部引入,按需引入;
单页应用首屏加载速度慢怎么解决
ShIcily的博客
04-13 3506
1、什么是首屏加载时间首屏加载时间是指浏览器从相应用户输入网址到首屏内容渲染完成的时间,从用户的角度来说就是:“地址栏输入网址之后网页呈现的速度”。整个网站并不需要全部加载完成,但需要展示当前可视窗口中的内容。 2、如何计算首屏加载时间? 常用方法: 首屏模块标签标记法 统计首屏加载最慢的图片的时间 自定义首屏内容计算法 借助第三方工具(pagespeed、vue-cli等等) 其实很简单,并不需要我们手动去计算。打开F12控制台,然后刷新网页,其中Load就是首屏加载时间。 3、
vue基础知识七:SPA首屏加载速度慢的怎么解决
Allen-Ye博客
09-06 544
SPA首屏加载速度慢的怎么解决
Vue进阶 | 性能优化——首屏加载速度慢
CRMEB小程序商城的博客
06-05 694
首屏加载时间(First Contentful Paint)是指从打开网站开始,到浏览器首屏内容渲染完成的时间(资源不一定全部加载完,但页面内容已完全展示)。
网络篇 2:图片优化——质量与性能的博弈(2).md
04-01
前端性能优化实践# 知识体系与小册格局 ## 写给读者 提起性能优化,大家现在脑海里第一时间会映射出什么内容呢? 可能是类似[“雅虎军规”](https://developer.yahoo.com/performance/rules.html?guccounter=1)和...
渲染篇 3:对症下药——DOM 优化原理与基本实践(1).md
04-01
前端性能优化实践# 知识体系与小册格局 ## 写给读者 提起性能优化,大家现在脑海里第一时间会映射出什么内容呢? 可能是类似[“雅虎军规”](https://developer.yahoo.com/performance/rules.html?guccounter=1)和...
性能监测篇:Performance、LightHouse 与性能 API(1).md
04-01
前端性能优化实践# 知识体系与小册格局 ## 写给读者 提起性能优化,大家现在脑海里第一时间会映射出什么内容呢? 可能是类似[“雅虎军规”](https://developer.yahoo.com/performance/rules.html?guccounter=1)和...
前端】数组的常用处理函数
lcukyNwa的博客
04-22 455
item------->每个元素值 (必)index----->索引(可选)arr-------- >当前数组(可选)推荐vscode的一款插件来写以下的demo,该插件可以直接在js文件中显示结果,搜 Quokka.js用这个插件去新建一个js文件,直接就运行在node上了forEach不会返回一个新的数组,里面改值会影响原数组,其他方法不影响原数组map可以返回新数组 用于映射,如每个元素都加倍或执行其他转换操作every返回一布尔值,需数组中全部满足。
C++ WebServer的细节理解
我的博客
04-22 623
在非阻塞模式下,如果 I/O 操作不能立即完成(例如,因为没有数据可读 或 写缓冲区满),系统不会让调用进程阻塞等待,而是立即返回一个错误(通常为 EAGAIN 或 EWOULDBLOCK)。先查询文件描述符 fd 当前的标志,然后将 O_NONBLOCK 标志加入其中,并通过 F_SETFL 来更新文件描述符,最终实现将该文件描述符切换为非阻塞模式。这意味着,如果没有待处理的连接请求(即没有客户端尝试连接到服务器),accept() 会一直阻塞,直到有新的连接请求到达或发生其他特定条件(如超时)为止。
SpringBoot项目打包分离高阶操作
最新发布
Record Little
04-23 667
虽然传输jar包 比较大,但是安全性、稳定性比较高,不需要关注pom.xml 添加了新的依赖、更新了版本号等等影响版本功能的操作。关注maven的特性, profiles即可满足, 根据不同的activation 状态,激活不同的build操作。每次修改一小部分代码或仅仅更新某个依赖jar包时,都需要重新进行整个项目的构建、打包、上传和部署。但是当你的项目趋于稳定,只有业务上的逻辑变更时,如果使用分离版本,可以加快迭代、更新的速度。弊端: 需要配置IDE命令,修改依赖时需要同时修改2处。
WebSocket 快速入门 - springboo聊天功能
m0_56308072的博客
04-21 918
HTTP和WebSocket都是啥?
Vue-router的动态路由:获取传递的值
woliuhuaqiangla的博客
04-22 418
Vue.js是一款流行的JavaScript框架,用于构建单页面应用程序。它提供了许多有用的功能,其中之一是Vue-router,它允许您轻松地管理应用程序的路由。Vue-router支持动态路由,这意味着您可以在路由中使用变量,并在组件中访问它们。本文将介绍如何定义Vue-router的动态路由,以及如何获取传递的值。动态路由的优缺点动态路由是指根据特定的参数来动态地生成路由,这在使用Vue-router时是非常常见的。
数据较大 前端v-for 循环渲染优化
09-05
这样可以减少渲染的负担,提高页面的加载速度和响应性能。具体实现时,可以使用库或插件,如"vue-virtual-scroller",来实现虚拟滚动效果。 另一种优化方法是使用分页加载或滚动加载。当数据较大时,可以将数据分成...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 【JS】JavaScript时间与时间戳相互转换 | 时间yyyy-MM-dd HH:mm:ss转为时间戳,时间戳转换为时间yyyy-MM-dd HH:mm:ss 51301
  • Openlayers 快速上手教程 36599
  • 【电脑知识】电脑的GPU是显卡吗?GPU到底是什么?显卡可以插几个? 19103
  • 【JS】js给对象动态添加、设置、删除属性名和属性值 17614
  • js与ts中判断数据类型的四种方法 14617

分类专栏

  • electron 1篇
  • 权限控制 2篇
  • javascript 53篇
  • uniapp 4篇
  • iot 2篇
  • three.js 1篇
  • vscode 4篇
  • typescript 13篇
  • vue 22篇
  • node.js 5篇
  • 前端优化 4篇
  • linux 3篇
  • 软件工具 1篇
  • angular 14篇
  • css 14篇
  • 正则表达式 2篇
  • 编译与打包 3篇
  • gis 1篇
  • git 1篇
  • openlayers 1篇
  • webstrom 1篇
  • echarts 3篇
  • 电脑知识 2篇
  • vscode插件 2篇

最新评论

  • 【uniapp】uni-app开发手持PDA上的激光扫码程序,uniapp主动触发pda激光扫码(附完整代码)

    普通网友: 干货满满!我也写了一篇获取【大厂面试真题解析、核心开发学习笔记、最新全套讲解视频、实战项目源码讲义、学习路线简历模板】的文章

  • 【uniapp】uniapp小程序中实现拍照同时打开闪光灯的功能,拍照闪光灯实现

    CSDN-Ada助手: 推荐 小程序 技能树:https://edu.csdn.net/skill/mini_programs?utm_source=AI_act_mini_programs

  • 【Vue】使用elementPlus的table时,实现自定义tooltip效果,单行显示,超出则显示省略号,鼠标移入后,当文字数量大于20则换行自定义展示的tooltip

    卸载引擎: 你肯定没有summary呀表情包这个值是我业务的值,你写道row那层就行,然后你看具体你想展示啥再取就行

  • 【uniapp】uni-app开发手持PDA上的激光扫码程序,uniapp主动触发pda激光扫码(附完整代码)

    卸载引擎: 你是哪家的设备?不同设备的广播名称不一样

  • 【uniapp】uni-app开发手持PDA上的激光扫码程序,uniapp主动触发pda激光扫码(附完整代码)

    m0_64529858: 我扫出来的值未nul,是哪里写的不对吗

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • 【uniapp】uniapp返回上一页,并实现刷新界面数据
  • 【uniapp】uniapp小程序中实现拍照同时打开闪光灯的功能,拍照闪光灯实现
  • 【Vue2】vue2中自定义组件实现双向绑定的写法,v-model在自定义组件中的实现
2024年7篇
2023年12篇
2022年66篇
2021年28篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卸载引擎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值

深圳SEO优化公司怒江网站推广哪家好太原外贸网站制作哪家好晋城网络广告推广多少钱保定外贸网站设计哪家好衡水网站制作设计公司哈密网站推广哪家好随州阿里店铺运营哪家好商洛百度关键词包年推广多少钱遂宁网络推广推荐大浪百度网站优化排名报价桂林设计公司网站公司湘西如何制作网站石岩网站制作设计价格常州网站开发哪家好漯河SEO按天计费报价伊犁网络推广多少钱霍邱优秀网站设计推荐厦门网站优化按天扣费石家庄百度爱采购哪家好吉祥百度网站优化多少钱清徐模板推广赤峰网站推广方案玉树关键词排名包年推广价格哈尔滨企业网站建设南平网站优化哪家好莆田推广网站哪家好宝鸡营销型网站建设公司忻州优化报价金昌网站搭建公司十堰百度竞价包年推广报价歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化