当前位置: 首页 > news >正文

性能优化相关

1.如何优化首屏加载速度?

  1. 关键css内联:将首屏相关的css内联到html中,避免css渲染阻塞
  2. 图片懒加载:非首屏的相关图片配置懒加载,当需要时再加载,减少性能
  3. 合并压缩文件:通过构建工具合并js 和css文件,减小打包体积
  4. 通过代码分割,按需加载可以提高加载速度,包括:
    1. 路由分割-路由懒加载:通过配置动态语句import 实现路由懒加载,当跳转页面时再加载组件;
    2. 组件分割:vue2通过import 动态引入组件,vue3通过defineAsyncComponent;
    3. 第三方库分割:在config.js中配置
  5. 使用ssR服务端渲染:在服务端生成首屏HTML内容,减少客户端渲染的时间
  6. 开启Gzip压缩-服务器配置

2.如何利用浏览器缓存优化性能?

首先浏览器缓存机制包括了强缓存和协商缓存,都是通过配置HTTP缓存头控制的

强缓存:是通过ceche-control设置的;

协商缓存:当强缓存失效时,浏览器携带缓存标识想服务器发送请求验证资源是否过期?

优化策略:静态资源通过设置强缓存一年,并配置文件名哈希自动更新缓存实现;HTML文件配置no-cache,每次都要验证更新避免用户看到旧页面;

service-worker:通过前端配置js实现离线缓存

3.如何优化SPA应用的首屏加载速度?

主要是通过代码分割 按需加载:组件分割、路由分割

  1. 异步加载组件 在vue2中通过import 语法,vue3中通过defineasyncComponents异步加载组件
  2. 路由懒加载,也是通过import动态引入
  3. 预加载关键字体
  4. 关键css内联HTML 非关键css异步加载
  5. 对图片进行压缩处理、懒加载图片;
  6. 可以通过服务端渲染SSR 首屏HTML 提高加载速度;
  7. 骨架屏:提升用户的页面等待体验;
  8. 利用浏览器缓存,对静态资源设置长缓存 
  9. 使用webpack 压缩js 和css,减小打包体积;

4.如何进行性能监控?

进行性能监控的目的是为了识别解决性能瓶颈,提高用户体验;性能监控分为了2种环境:

实验室监控:在预发布环境下通过lighthouse\webpageTest对应用进行全面的性能分析,后者可以实现可视化瀑布图;

真实用户监控:在生产环境下,通过web vitals+sentry 或者 chorme analytycs等工具采集真实用户的性能数据;还可以通过performance API获取性能数据

进行性能监控流程首先是

  1. 制定并确认核心性能的指标,包括;
    1. LCP:最大内容渲染的时长
    2. FID:首次输入的延迟
    3. CLS:累计布局的偏移
    4. FIN:交互的延迟
    5. 等。
  2. 在预发布环境下通过lighthouse 进行性能测试
  3. 发现并处理性能问题
  4. 验证处理后的性能效果
  5. 部署到生产环境下,采集真实用户的性能数据
  6. 发现性能问题收集问题在预发布环境复现并开始重复以上流程步骤;

性能监控是一个持续化的过程,要及时发现和解决,不断的改进和优化;

5.什么是reflow 重排和repaint 重绘?如何避免?

重绘:当元素的外观、样式改变但不影响布局时,浏览器会重新绘制元素叫重绘;

重排:元素的尺寸、布局隐藏等改变需要重新构建的过程叫重排,重排需要更新整个渲染树,性能成本很高;

常见的导致重排的操作有:

动态添加、删除、修改DOM节点;改变元素的位置、尺寸、字体大小;改变窗口大小;激活伪类等等。。

避免、优化的方法:

批量修改dom:使用documentfragment

避免逐条修改样式:使用class 代替style ,直接修改类选择器的样式,一次性修改多个样式

避免在频繁读取布局属性

使用transform和opcity 进行动画,不会触发重绘

6、如何优化渲染性能?

  1. 减少重绘和重排:
    1. 避免多次修改DOM,使用DocumentFragment批量修改dom
    2. 避免交替读写布局属性:offsetwidth;
    3. 使用transform,opcity做动画,触发GPU加速
  2. 优化JS的执行
    1. 避免长任务的执行,使用settimeout 分片或者 requestIdleCallback
    2. 使用节流和防抖
  3. 虚拟化长列表:针对大的数据,只渲染可视化区域,避免一次加载大量DOM;
  4. 优化CSS :避免选择器嵌套过深
  5. 图片进行压缩处理,使用图片懒加载
  6. 关键资源内联HTML
  7. 路由懒加载
  8. 按需加载组件、UI库等;
  9. 减少HTTP请求:
    1. 使用webpack 合并js 和css文件;
    2. 对于静态资源可以使用长缓存策略;

高频面试题:

浏览器缓存机制的区别

虚拟dom为什么快?

相关文章:

  • 将 App 安装到 iPhone 真机上测试
  • 安装 Ubuntu Desktop 2504
  • FastChat 架构拆解:打造类 ChatGPT 私有化部署解决方案的基石
  • 深度学习——基于PyTorch的MNIST手写数字识别详解
  • java_oss_微信小程序_通过临时签名url访问oss中存储的图像
  • SpringCloud2020-alibaba
  • 第32节 Node.js 全局对象
  • Mysql官方下载地址
  • TCP的三次握手和四次挥手(面)
  • CFCF2025光连接大会邀请函:昊衡科技诚邀您莅临光纤通信行业盛会,共话未来
  • 我会秘书长杨添天带队赴光明食品集团外高桥食品产业园区考察调研
  • Chainlink VRF 深度解析与实战
  • 智驱未来:迁移科技3D视觉系统重塑复合机器人产业生态
  • 枫清科技携手中化信息挖掘实现AI高价值场景应用,打通智能化“最后一公里”
  • VR 虚拟云展:科技浪潮下的新趋势​
  • java复习 11
  • RDMA简介7之RoCE v2可靠传输
  • React ajax中的跨域以及代理服务器
  • 基于OpenCV实现实时颜色检测
  • C语言文件操作与预处理详解
  • 用幽默的语言来形容网站开发/seo搜索引擎优化薪资
  • 泰安北京网站建设/seo和竞价排名的区别
  • 深圳做生鲜食材的网站叫什么/自己有网站怎么推广
  • 购物网站开发的描述/免费友情链接网页
  • 有哪些网站可以做兼职/推广文章的推广渠道
  • 网站建设价格是多少/廊坊seo