使用Object.freeze和object.unfreeze减少具有大量表数据行的反应性页面中的内存膨胀

时间:2019-05-01 17:31:56

标签: javascript html vue.js vuex vuetify.js

我正在使用here提供的方法来减少我的Vue.js应用程序的内存膨胀,该应用程序具有很多表/行数据。我们看到内存膨胀,尤其是在IE中。 例如包含两行的页面在加载页面时可以跳转到100MB。

我发现,如果我冻结进入存储行数据的列表/数组的每个对象,膨胀就会大大降低。 100MB-> 60MB

对于减少多个页面上有大量表数据的Vue.js应用程序,这是否是减少内存膨胀的最佳解决方案? 我注意到,如果不发生冻结,则IE可以在击中2-3页并执行1-3个搜索后将内存增加到〜1GB,每个搜索导致50行数据!每次我们进行搜索时,我都会尝试清除数组,以便进行垃圾收集器清理工作,但这确实没有太大影响。

另外,当我们在数据表行中有一列需要即时更改(例如日期或名称)时,我应该 1.放松 2.做出改变 3.再次冻结 4.将其推回阵列

使用类似this package

1 个答案:

答案 0 :(得分:0)

这可能会有点晚,但是您也可以在可变变量(let)中创建对象,并在需要重置时将原始对象重新分配给该变量。

例如:

let obj = { objProp: "example" };

if (condition) {
    Object.freeze(obj);
}
else {
    obj = { objProp: "example" };
}