码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【工作中遇到的性能优化问题】


    项目场景:

    页面左侧有一列表数据,点击列表项会查对应的表格数据和表单信息(表单是根据数据配置生成的),并在右侧展示。如果数据量大,则非常卡。
    需要对此页面进行优化。


    问题描述

    问题一、加载左侧数据时,默认选中第一条数据,会去调用查表单明细的接口,然后渲染数据。有一定的卡顿,1000条数据卡顿6s左右。
    问题二、点击左侧数据,会去调用查询表单明细的接口,然后渲染数据。有一定的卡顿,1000条数据卡顿6s左右。

    此时,需要明确是加载数据慢,还是运行渲染慢、体验不流畅的问题。


    原因分析:

    使用Chrome devtools做性能分析:
    在这里插入图片描述

    在这里插入图片描述
    常用的性能指标有

    • First Paint(FP) 从开始加载到浏览器首次绘制像素到屏幕上的时间,即首次发生视觉变化的时间。
    • First Contentful Paint(FCP) 浏览器首次绘制来自DOM内容的时间,内容包括文本、图片等。
    • First Meaningful Paint(FMP) 主要内容绘制到屏幕的时间。这个一个更好的衡量用户感知加载体验的指标。主流的分析工具都已弃用 FMP 而使用 LCP
    • DomContentLoaded(DCL) 即DomContentLoaded触发时间,DOM全部解析并渲染完。
    • Largest Contentful Paint(LCP) 可视区域中最大的内容元素呈现到屏幕上的时间。用以估算页面主要内容对用户可见的时间。
    • Load(L)window.onload 触发时间,页面内容(包括图片)全部加载完成。

    而当前场景主要是接口返回数据占用了很长的时间。

    所以,可以用考虑从数据请求、用户体验等方面优化。

    综上,得出结论:主要是加载速度慢。


    解决方案:

    对于加载慢,可以有以下解决方案:
    1、优化服务器接口
    2、使用CDN
    3、拆包,异步加载

    因此,最终解决方案是:
    1、让后端对接口数据拆分,去掉冗余数据,sql查询加索引等;
    2、前端把接口调用改为异步调用(之前是同步,同步的话UI线程会被挂起,接口数据返回后,才能交互),发出请求后,能继续执行交互效果,如选中列表效果、loading效果,提高用户体验感。
    3、优化代码,降低时间复杂度,如双层for循环采用哈希表的方法,将O(n^2)降至为O(n)。

  • 相关阅读:
    YOLOv7改进---注意力机制: EMA基于跨空间学习的高效多尺度注意力、效果优于ECA、CBAM、CA | 小目标涨点明显 | ICASSP2023
    Cookie和Session的区别
    进行日常记账后,怎样导出表格
    节点异常检测 node-problem-detector
    【408数据结构与算法】—堆排序(二十一)
    6-脱氧-β- L -半乳吡喃糖基鸟苷 5′-二磷酸,Guanosine 5‘-diphospho-fucose,GDP-BETA-L-FUCOSE
    win11微软账户登录一直转圈怎么解决?win11微软账户登录一直转圈
    我人都傻了,CompletableFuture和OpenFegin一起使用竟然报错
    【软件工程】介绍
    多维评测指标解读2022MSU世界编码器大赛结果
  • 原文地址:https://blog.csdn.net/weixin_42936434/article/details/131029454
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号