首页 > 其他分享 >记一次翻页性能优化

记一次翻页性能优化

时间:2023-11-05 20:45:14浏览次数:32  
标签:场景 翻页 渲染 性能 发送 耗时 优化 前端

背景

   由于是公司项目,所以不方便给出代码或者视频,只能列一些自己画的流程图。

   大致情况如上,前端有7个显示区。在对其进行滚动翻页的时候,存在以下问题:
1. 连续滚轮翻页,每次所有显示区刷新完,进行下一次翻页用时较久。(说人话就是,平均耗时翻页时间长)
2. 连续滚轮翻页,会出现一下子翻不动,然后连续刷新很多层的情况。且有的显示区更新快,有的层更新更新很慢。

分析

   通过分析代码,调查log发现,翻页切换平均耗时在600ms。其主要的业务逻辑如下:
1.前端线程发送同步翻页命令给后端
2.后端进行处理,共7个显示区。前三个每个耗时30ms左右,后4个业务处理平均需要100ms。在后端处理过程中,已完成的场景数据,已经异步发送给前端。
3.前端等到后端处理完数据,根据接收数据,进行前端绘制,耗时110ms左右。

问题

主要问题有三个:

1.后端处理逻辑耗时太长了,特别是后4个场景。
2.前端等到后端逻辑处理完,才可以UI渲染,中间白白等待,耗时过长
3.在前端连续翻页情况下,有可能出现,第一次翻页的场景还没渲染完(只渲染了几个区域,或者一个都没有),就开始发送下一次渲染。造成“卡很久,然后一下次渲染好几帧的现象”。

解决

优化有3点:
1.以空间换时间。把耗时的即时计算操作,提前计算好,存储在内存中。那么在翻页过程中,就只是拷贝数据。
2.将图像刷新从同步改成异步。
    2.1前端发送命令变成异步(这里最初同步是有一些业务需求,需要改造)
    2.2我们的后端框架的刷新逻辑由两部分组成:数据序列化+发送。如果采用同步,后面4个场景的序列化的总时间,大概需要200ms。如下图所示。如果采用异步,那前端阻塞的时间,就几乎可以忽略不急


3.同步机制

   前两点优化以后,翻页速度非常快。主要耗时只在后端序列化+发送数据+前端处理,可以达到200ms左右一次翻页。但存在异步刷新的问题。具体情况如下:

1.第一次翻页后,后端发送给前端数据,前端还只收到前两个场景的数据,并渲染。
2.前端收到翻页指令,接着发送翻页。后端发送7个场景,因为前几个场景,数据少,很快又发到了前端。
3.前端渲染第二次翻页的前几个数据
4.前端渲染第一次和第二次的剩余数据。

解决:

后端在收到翻页指令以后,先等待自己上一次所有场景都刷新完,再接着序列化、发送。这样前端数据就能最大程度的进行渲染了,不会出现错位。

总结

最后的流程图如下,从最初600ms左右延迟的卡顿翻页,如今变成200ms左右的稳定翻页,优化效果非常不错。

标签:场景,翻页,渲染,性能,发送,耗时,优化,前端
From: https://www.cnblogs.com/chendasxian/p/17810809.html

相关文章

  • 如何借助数据集更好的评估NLP模型的性能?
    随着信息时代的迅猛发展,每天有无数文本、声音、图片和视频不断涌入互联网。如何从海量数据中提炼有意义信息成为学术界和工业界迫切需要解决的问题。在此背景下,自然语言处理(NLP)应运而生,成为人工智能领域最为活跃的研究领域之一。NLP的目标是让计算机理解和生成人类语言,从而实现与人......
  • HDFS Distcp数据迁移与优化实践
    1.背景对于HDFS集群而言,不可避免会将一个集群中的数据迁移到另外一个集群中。一般以下几种情况需要进行迁移:hadoop2集群中的项目数据迁移到hadoop3中。hadooprbf的一个子集群block数量在2亿~3亿,需要将大项目迁移到其他空闲子集群。海外项目数据由于历史原因存放到国内集群,根......
  • 小程序性能提速大作战:少点HTTP请求,多点性能!
    引言:嗨,各位小程序魔法师们,是不是常常被小程序的加载速度拖拖拉拉?别担心,小编今天要带你们探讨一项神奇的技能——减少HTTP请求,让你的小程序速度飙升!我们要玩得开心,一切都要如丝滑般流畅!背景:小程序性能提速的关键之一就是减少HTTP请求。过多的请求会导致小程序的加载速度变得缓慢,影......
  • 普加项目管理中间件:优化项目管理流程的利器
    项目管理是现代商业运营中至关重要的一环。随着项目的复杂性不断增加,需要更有效的工具和方法来规划、执行和监控项目,以确保项目按时、按预算和按质量交付。普加项目管理中间件(PertMiddleware)已经成为众多组织的首选工具,用于简化项目管理流程、提高项目可见性、降低风险,并最终实现......
  • 监控易:实时掌握IT设备的健康状况和性能表现
      在当今的数字化时代,IT设备是企业运营的重要支撑,无论是服务器、路由器、交换机、防火墙还是PC、打印机、摄像头等,都承载着各种业务和服务。如果这些设备出现故障或性能下降,就会影响企业的正常运作,甚至造成重大损失。因此,对IT设备进行有效的监控和管理,是每个企业都必须面对的挑......
  • 百度网站怎样优化排名_百度如何优化排名靠前
    网站如何优化排名才会靠前?1、(1)用户体验经过网站的优化设计,用户可以方便地浏览网站的信息、使用网站的服务。2、④、内链建设:站内优化也是重中之重,如导航栏设计、站内导向链接规划等。当用户浏览网页的时候最好知道自己身处在什么位置。另外,为用户提供有价值的“下一站”跳转......
  • Python 潮流周刊#25:性能最快的代码格式化工具 Ruff!
    你好,我是猫哥。这里每周分享优质的Python、AI及通用技术内容,大部分为英文。标题取自其中一则分享,不代表全部内容都是该主题,特此声明。本周刊由Python猫出品,精心筛选国内外的250+信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿......
  • Java服务中的大文件上传和下载优化技巧分享
    1.分片上传和下载将大文件分割成更小的块或分片,可以减轻服务器负担,提高处理效率。上传示例:importorg.springframework.web.multipart.MultipartFile;importjava.io.RandomAccessFile;importjava.io.File;importjava.io.IOException;publicvoiduploadFile(MultipartFi......
  • 小程序性能提速大作战:缓存策略助你事半功倍!
    引言:嘿,各位小程序开发小伙伴们,你是不是在优化小程序性能的道路上磕磕绊绊,感觉进展缓慢?别担心,小编今天要和你聊聊小程序性能优化的秘密武器——缓存策略。我们不来搞得太严肃,就是要玩得爽!背景:小程序性能优化的关键之一就是减少不必要的数据请求,缓存策略正是为此而生。我们的目标是......
  • HPO-ELM猎食者算法优化极限学习机的数据回归预测 可直接运行 预测效果好 Matlab~
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,代码获取、论文复现及科研仿真合作可私信。......