登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
记一次前端使用Websocket实现AI会话时卡顿的bug修复记录 ...
记一次前端使用Websocket实现AI会话时卡顿的bug修复记录
[ 复制链接 ]
诀锺
2025-6-6 15:51:45
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
引言
嘿,大家好!今天我想聊聊我最近在前端开发中遇到的一个头疼的问题,以及我是如何一步步解决它的。如果你也在使用Websocket实现AI会话,或许你会遇到类似的问题。
项目背景
我最近在捣鼓一个开源项目,项目地址:GitHub - chatpire/chatgpt-web-share: ChatGPT Plus 共享方案。ChatGPT Plus / OpenAI API sharing solution. 感谢大佬的开源。原本它支持多种AI聊天接口,但我把它简化了,只保留了OpenAI API,专注于特定功能的开发。
遇到的挑战
在开发过程中,我发现随着聊天轮次的增加,应用的响应速度越来越慢,内存占用也异常高。这让我有点头疼,毕竟用户体验是最重要的。
初次尝试:内存分析
我尝试用开发者工具去分析内存,但说实话,我那半吊子的前端水平让我有点摸不着头脑。我在网上搜罗了各种教程,但似乎都不太对症。
思路转变:性能优化
我意识到问题可能出在渲染大量echarts图表上,于是尝试引入了虚拟列表技术。想法是好的,但实际操作起来却问题多多,比如消息丢失、滚动条乱跳等等。
再次调整:简化数据处理
在放弃了虚拟列表后,我决定换个角度思考。我发现在AI回复时,CPU占用率特别高。这让我意识到,可能需要重新设计后端和前端的数据交互方式。
技术实现
我调整了后端逻辑,让它只发送最新的消息增量,而不是每次都发送全量消息。这样不仅减少了网络传输的负担,也减轻了前端的内存压力。前端代码也做了相应的优化,避免了重复的消息处理。
const index = currentRecvMessages.value.findIndex((msg) => msg.id === message.id);
if (index === -1) {
currentRecvMessages.value.push(message);
} else {<br> // 原来的
// currentRecvMessages.value[index] = message;<br> // 新的
currentRecvMessages.value[index].content!.text += message.content!.text;
}
复制代码
效果
经过这些调整,应用的响应速度和内存占用都有了显著的改善,用户体验也大幅提升。现在,CPU占用通常在10-35%之间,但接收echarts图表时,会飙升至150-300%。这显然是下一步需要优化的点。
未来计划
我猜测,CPU占用率飙升的原因可能是需要同时渲染30张图表。我计划进一步优化图表的渲染方式,比如分批渲染或使用更高效的图表库。如果你有任何建议或想法,欢迎在评论区告诉我!
结语
这次的经历让我深刻认识到,优化是一个不断试错和调整的过程。我相信,通过持续学习和实践,我能成为一名更出色的全栈工程师。如果你有任何建议或想法,欢迎在评论区告诉我!
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
一次
前端
使用
Websocket
实现
相关帖子
C#实现三菱MC通讯协议库(4C帧-格式1)
在前端项目中安全调用大模型 API 的实践,我是怎么做的?
使用ai的方法给epub文件中的汉字加拼音
在PySide6/PyQt6的项目中实现样式切换处理
新项目为什么推荐使用WebFlux,而非SpringMVC?
在java中实现c#的int.TryParse方法
Linux Mint下使用vscode编译C++代码
剑指offer-48、不使⽤加减乘除实现加法
flex里的小众元素实现方式
如何实现 vxe-tree 树组件拖拽节点后进行二次确认提示
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
业界
C#实现三菱MC通讯协议库(4C帧-格式1)
0
21
简千叶
2025-12-08
业界
在前端项目中安全调用大模型 API 的实践,我是怎么做的?
0
397
趣侮
2025-12-08
业界
使用ai的方法给epub文件中的汉字加拼音
0
237
叶芷雁
2025-12-08
业界
在PySide6/PyQt6的项目中实现样式切换处理
0
321
全愉婉
2025-12-08
业界
新项目为什么推荐使用WebFlux,而非SpringMVC?
0
911
各卧唯
2025-12-09
安全
在java中实现c#的int.TryParse方法
0
799
歇凛尾
2025-12-09
安全
Linux Mint下使用vscode编译C++代码
0
712
聊账
2025-12-10
安全
剑指offer-48、不使⽤加减乘除实现加法
0
377
每捎京
2025-12-10
安全
flex里的小众元素实现方式
0
210
皇甫佳文
2025-12-10
代码
如何实现 vxe-tree 树组件拖拽节点后进行二次确认提示
0
149
啪炽
2025-12-10
回复
(3)
轧岔
2025-10-16 15:31:06
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
东西不错很实用谢谢分享
谭皎洁
2025-10-27 03:28:21
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
谢谢分享,试用一下
班闵雨
前天 03:05
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
感谢分享,学习下。
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
签约作者
程序园优秀签约作者
发帖
诀锺
前天 03:05
关注
0
粉丝关注
24
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
anyue1937
9994893
kk14977
6845356
3934307807
991122
4
xiangqian
638210
5
宋子
9984
6
闰咄阅
9991
7
刎唇
9993
8
俞瑛瑶
9998
9
蓬森莉
9951
10
匝抽
9986
查看更多