聊到300条消息,ChatGPT的标签页就能卡到完全不动。我一直以为是OpenAI的服务器撑不住了,结果根本不是那么回事。
- 卡顿根源是浏览器。ChatGPT会在你浏览器里同时渲染所有历史消息的DOM元素。
- 内存占用惊人。打开开发者工具观察,200条消息左右,一个标签页就能吃掉超过1GB的RAM。
- 有个Reddit用户自己动手解决了。他写了个东西,在React渲染前截获对话数据,只保留最近的消息,让1865条消息的对话从卡死变流畅。
事情是这样的
Reddit上有个用户,叫Distinct-Resident759,被长对话卡顿折磨了好几个月。他一开始也和大家想的一样,觉得肯定是OpenAI那边服务器压力大,或者模型负载太高。直到有一天,他决定打开浏览器的开发者工具看看。
这一看,发现问题了。他眼睁睁看着内存使用量随着每一条新消息的发送而稳步攀升。一个300条消息的对话,意味着你的浏览器正在同时处理成千上万个活的DOM元素。对话越长,情况越糟,直到标签页彻底冻住。
他在帖子里是这么说的:
at around 200 messages my browser was using over 1gb of ram just for that one tab.
讲真,这锅OpenAI背得有点冤。问题出在前端渲染逻辑上,不是他们的服务器算力不够。
自己动手,卡顿没有

搞清楚问题在哪,这位老哥就直接动手了。他自己写了个解决方案,核心思路很简单:在React组件渲染对话历史之前,就把数据截下来,然后修剪一下,只保留最近的一部分消息,而不是把整个几百条的历史都塞给浏览器去画。
效果怎么样?他拿一个1865条消息的聊天记录做了测试。结果是,从完全卡死,变成了瞬间响应。他还做了个实时计数器,让你能直观看到速度提升了多少。
他在帖子最后说:if you are dealing with this too, happy to share what i built. 意思是,如果你也遇到同样问题,他很乐意分享他做的这个东西。他还好奇是不是也有别人注意到了同样的事。
这事说白了,就是产品设计时的一个取舍。为了让你能随时上下滚动查看完整的对话历史,前端就得把所有消息都准备好。但代价就是,对话一长,浏览器就扛不住了。对于咱们用户来说,以后遇到ChatGPT卡顿,可以先开个新对话窗口,或者手动清一下超长的聊天记录,这可能是最直接的缓解办法。当然,更期待官方能优化一下这个渲染逻辑。
留言聊聊
你遇到过ChatGPT长对话卡死的情况吗?你是选择开新窗口,还是定期清理聊天记录?
来源:Reddit ChatGPT|原文:I found out why ChatGPT gets slower the longer you use it and it has nothing to do with OpenAI's servers
网友评论