胖胖龙 发表于 2023-12-13 13:40:29

添加到数组的数据导致浏览器内存溢出怎么办?

给客户写了个插件,需要循环从网页获取数据然后下载成文件,然后我是把处理后的数据都添加到一个数组里了,循环1000-2000次之后程序就停止,调查了一下好像是这个数组数据太多,浏览器内存溢出,这种有什么好的办法解决。![图片1.png](data/attachment/forum/202312/13/133912x221gu136a2b1h62.png)![图片2.png](data/attachment/forum/202312/13/133922ea99fsfyltsm9ya9.png)

李恒道 发表于 2023-12-13 15:28:28

如果说要下载成多个文件
可以不保存数组要求允许网页自动下载文件,直接不保存了弹出下载
如果要保存成单个文件
可能可以通过流下载方式解决
https://github.com/jimmywarting/StreamSaver.js
可以试试这个库,但是我没尝试过

胖胖龙 发表于 2023-12-13 16:25:53

李恒道 发表于 2023-12-13 15:28
如果说要下载成多个文件
可以不保存数组要求允许网页自动下载文件,直接不保存了弹出下载
如果要保存成单个 ...

好的,大佬,我先试试

cxxjackie 发表于 2023-12-13 22:22:14

这种需求听上去不是很适合用浏览器来做,就算不溢出也会很慢,你应该考虑用其他语言来写爬虫。
优化建议:
1.将同步的循环改成异步,以避免堆栈问题。
2.将一个大文件分割成多个小文件下载。
3.用IndexedDB来存储数据,这个API我不太熟悉,但可能符合你的需求。
页: [1]
查看完整版本: 添加到数组的数据导致浏览器内存溢出怎么办?