我一直试图解决这个问题一段时间了,我甚至试图改写整个程序,但没有成功。该应用程序在VueJS 2.3.3上运行,并且应该在Chromium上与Raspberry Pi一起运行(目前无关信息)。
我们正在处理单个文件中包含的多个组件,稍后此文件将使用gulp
或npm run dev
进行编译。当VueJS
的实例初始化时,将使用Vue Resource
$http
选项发送请求。这将收到大约30mb
大小的json响应。这将被保存在数据数组中,如下所示:
this.$http.get('<url>' + this.token)
.then((response) => {
this.properties = response.properties;
});
此数据稍后将用于进一步的操作,另一件值得一提的是数据每隔一段时间刷新一次。这就是我认为问题出现的地方,如果我不是每5分钟刷新一次数据(也可能更长,真的取决于我测试的方式),程序运行正常。只是我想每隔一段时间刷新一次数据以检索新信息。设置我使用的超时的方法如下:
this.dataTimeout = setTimeout(this.refreshData, 300000);
每个(所谓的)property
至少有6个base64图像保存在它的JSON中,后来用于呈现给用户。除此之外,还有一个名称,地址和一些其他微小的数据。它并没有听起来那么错,但我感觉每次响应都会让内存变得如此激烈,甚至桌面也无法运行它。
每10秒钟会在用户的屏幕上显示一个新的property
,包括图片,街道,位置等。我不确定我的代码中是否有内存泄漏或者如果我忘了什么的话。我脑子里浮现出几个问题:
null
或undefined
?VueJS
实例可以保持多久,是否有任何建议时间重新加载整个程序?我已经取消了数据续订并在线投放了一个演示项目,这可以在here看到。我遇到的主要问题是浏览器内存不足,并向我们展示了Chrome中令人惊叹的Aw snap!
页面。我尝试从内存使用中获取快照,但一切看起来都很好,它只会在一段时间后随机爆炸。
先谢谢!
答案 0 :(得分:0)
好吧,我不知道你的应用程序到底是什么,但你的30Mb数据真的有用/必不可少吗?在JSON中呢?
也许您不需要所有这些数据,您可以根据需要调整数据。例如,保留您的JSON存储数据,并通过其他方式检索您的Base64图像。
我不明白为什么要存储在内存中。在我看来,图像对于显示目的非常有用。
所以我认为30Mb真的很大。但也许我错了?
顺便说一句,我已经使用Firefox Nightly进行了测试,这里没问题。似乎没有崩溃。也许我没有遇到刷新电话?