我开发了一个Chrome扩展程序,它可以循环显示大约1500-2000页,从网站收集信息并将其推送到我自己的服务器上。我使用Chrome扩展程序,因为它的要求比从服务器端进行编译和解析要容易得多。
该扩展程序仅用于内部目的,我们使用chrome.alarm API在每天凌晨3:00运行此作业。当触发器弹出时,此警报会打开一个新选项卡并在1500-2000页面中运行。问题是,当我们在早上办理登机手续后,我们会看到SNAP dialogue在扩展程序循环播放约1500页(约3/4)之后。我认为这是由于Chrome上的内存需求维持如此异常庞大的历史记录?
我的问题是,减轻这种情况的最佳方法是什么?据推测,杀死选项卡并重新打开(在x个页面之后)会起作用,但这会减慢进度并需要相当多的代码重新分解。有没有办法可以强制Chrome转储历史记录,并在即时会话中执行这样的免费记忆?
只是添加一些上下文,我在一个只有1 GB内存的额外小VM上运行它。我很欣赏我可以升级VM,但这确实只是推迟了这个问题。
答案 0 :(得分:1)
如果没有看到你的代码,很难做出可靠的推荐,但这里的内容更为通用:
问题可能是正在收集的信息。它继续在内存中积累,直到你用完为止。您可以考虑使用Chrome的无限存储功能将结果保存到本地存储。在清单文件中:
"permissions": [
"unlimitedStorage"
],
我可能会做的是在每个页面或类似的东西之后保存到本地存储,然后重置数组(或者你正在使用的任何东西)。
更新
如果确实是历史问题,您可以考虑动态删除它。此功能将删除特定URL的条目:
https://developer.chrome.com/extensions/history.html#method-deleteUrl