React App - Chrome Big Content
问题
在系统内有个地方会显示设备传上来的系统堆栈, 有时候在windows
上这段堆栈会非常大. 而它是已经自带格式的了, 之前的做法是直接用一个pre
显示这段内容就可以. 但是最近发现了一个问题, 在chrome
下, 如果内容超过1M
, 就会非常卡顿, firefox
下就不会出现这个问题.
最开始还以为是我们系统元素过多, 导致了这个问题, 但是实测发现, 即时是一个空的html
, 一个纯文本节点内容超过1M
的时, chrome
渲染都需要5s
以上, 而firefox
是秒开, 所以定位到了这个问题.
解决
尝试了一下, 只要把节点划分得越多, chrome
就渲染得越快. 但也不能太多, 如果节点太多同样会导致dom
渲染较慢, 取一个中间值, 分成30-50
个节点, 就可以实现性能的平衡.
react
实现
1 | const strArr = useMemo(() => { |
其他
在测试的时候额外尝试了一下极端情况, 发现不管是否分多个节点, 在超过20M
的文本内容情况下, chrome
打开都会直接崩溃, 而firefox
没有这个问题. 看来chrome
和firefox
还是有区别的
React App - Chrome Big Content
https://mosby-zhou.github.io/2020/12-04-react-app-chrome-big-content/