性能优化相关

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为什么快?

相关推荐
小杍随笔1 小时前
Rust桌面GUI框架:性能优化与实战避坑指南
开发语言·性能优化·rust
MU在掘金916952 小时前
报告生成:怎么让AI输出结构化内容
性能优化
光影少年4 小时前
Webpack打包性能优化方面的经验
前端·webpack·性能优化
一起搞IT吧19 小时前
Android性能系列专题理论之十:systrace/perfetto相关指标知识点细节含义总结
android·嵌入式硬件·智能手机·性能优化
techdashen1 天前
从 51% CPU 占用到 SIMD 加速:Cloudflare 防火墙引擎的性能优化实录
性能优化
草履虫君1 天前
VMware 虚拟机网络性能优化指南:从 11 秒到 4 秒的完整调优实践
服务器·网络·经验分享·性能优化
kyriewen1 天前
你的网页慢,用户不说直接走——前端性能监控教你“读心术”
前端·性能优化·监控
一起搞IT吧1 天前
Android性能系列专题理论之十一:block IO问题分析思路
android·嵌入式硬件·智能手机·性能优化
懋学的前端攻城狮1 天前
iOS 列表性能优化实战:从 45fps 到 60fps 的蜕变
ios·性能优化·ui kit
ellis19701 天前
Unity UI性能优化一之插件【Unity UI Optimization Tool】
unity·性能优化