uniapp 线上问题排查 小程序
某天线上客户反馈,页面点击进入另一个详情页面非常慢。
线上我排查浏览器,看接口返回时长,发现正常,然后去做性能,分析,发现有接近50dom 1.6秒的渲染。
然后这些dom都是公式渲染,我在mathjax3.2统一用的 promise,都在微队列中了
然后我的点击接口都是也是一个promise,所以在等dom渲染队列完成后,才能执行我们的功能点击。
问题已经找到了promise的排队,dom 公式渲染执行时间太长了,如何解决呢?
我这边是运用视口外的公司不渲染,做一个延迟,滚动到视口后做加载。
具体操作如下。
修改mathjax 公式渲染组件
isInViewport(element) {
const rect = element.getBoundingClientRect();
return (
rect.top >= 0 &&
rect.left >= 0 &&
rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&
rect.right <= (window.innerWidth || document.documentElement.clientWidth)
);
},
我这里有初始化处理,mydebounce 防抖,公式渲染我们做ai 交互,会有比较大的抖动,第一次全量渲染,在视口内,否则滑动渲染
监听变化实时渲染,我用了markdown
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/8455163c18544818a3a453a561a2238b.png
已经延迟加载了
加载出来了
AI对话界面
接下来正常了,欢迎各位老师同学相互交流,指点问题