extjs 外部网格面板:内存不足

vlf7wbxs  于 2023-03-08  发布在  其他
关注(0)|答案(1)|浏览(168)

在extjs 7.5.1中,所有的网格面板都是“无限滚动”的,并且有https://docs.sencha.com/extjs/7.5.1/classic/Ext.grid.plugin.BufferedRenderer.html插件
“(...)用户可以滚动数千条记录,而不会因将所有记录一次性呈现到DOM中而降低性能。(...)它会自动示例化并应用于所有网格”
我正在努力将应用程序从旧版本迁移到extjs 7。它在源extjs 4版本中按预期工作(行数相同~ 80 k)。第一步是删除显式创建,因为它不应该再直接使用了。
这是一个供框架内部使用的私有实用程序类。不要依赖它的存在。
尝试诊断所发生问题的最佳方法是什么?
在浏览器DevTools中:
网格。缓冲渲染器。是缓冲渲染器〈true
网格.bufferedRenderer.isPlugin〈真
网格.bufferedRenderer.已禁用〈false
grid.bufferedRenderer.id 〈空
最后一个可能看起来很可疑......但是如果我执行getId(),它会从那时起获得一个生成的Id。
由于缺少tim,我无法重现代码的示例,也不允许我分享真实的的代码。
我有一个before应用程序(extjs 4)和一个after应用程序(extjs 7),所以我们将extjs版本迁移到了一个新版本,修复了很多损坏的功能,其中大多数都有一个显式错误,我们可以跟踪错误到代码中的某个位置(很多时候在extjs框架代码中,因为它会在那里表现出来)。
内存快照显示4GB的内存主要在DOM对象中,所以BufferredRenderer没有完成它的工作。
我已经检查了代码,寻找可能导致与新版本extjs冲突的可疑覆盖或配置。我已经并将尝试调试代码,但由于问题发生在extjs端的代码,我花了很多时间试图弄清楚到底是怎么回事,进展很小。也许我会尝试存根数据,以修复行的体积在一个快速迭代,但大到足以检查Dom的优化,希望200行就足够了。

yptwkmov

yptwkmov1#

我们仍在试图了解到底发生了什么,但我们已经找到了一个有效的解决方案:为每次搜索创建或绑定新的存储。
我用一个helper静态数据文件将这个问题复制到了应用程序之外。我们使用的是extsj 7. 5. 1,如果我有空闲时间(不太可能),我会尝试做一个小提琴。
如果我使用grid.bindStore(store)进行动态绑定,它会有效地显示大量的行;如果我使用Ext.grid.Panel存储配置,它不会,并且会出现内存不足的异常。怀疑是缓冲渲染器的问题。不确定。

相关问题