我正在开发一个Web应用程序,需要在浏览器上加载非常大的数据集,此外,我还需要在SharedWorker上加载大量数据。
当前浏览器(Chrome?)的限制为单个进程/选项卡设置了大约 8GB 的已用内存限制。
我的应用程序使用不同的窗口(每台计算机的屏幕一个),并且每个窗口都使用
noopener
属性打开,以确保使用专用进程。这允许每个窗口使用 8GB,而不是跨页面共享限制。
现在我还需要对 SharedWorker 执行相同的操作,目前它与生成它的任何页面共享限制。
我找到的唯一解决方案是打开一个
noopener
弹出窗口,生成 SharedWorker,然后关闭弹出窗口。但这对于用户来说是非常侵入性的。
我尝试使用沙盒 iframe,但一旦添加
allow-same-origin
指令,iframe 就开始与其父窗口共享进程。
有人知道这个问题的任何其他解决方案吗?
我浏览了一些自己的应用程序,发现我解决这个问题的方式
或者我对
Chrome
所做的类似工作是创建一个新窗口并创建一个在其上运行的 iframe。 (我知道你不想要,但没有它有点难)如果你可以在这里运行两个页面,其中一半数据,然后在这里也可以工作。 另一个解决方案 我进行了一些测试,但不知道它是否完全有效正在加载第一轮数据并将其放入您的DOM中(假设您有HTML或某种生成器),关闭您的sharedWorker
或 serviceWorker
如您所说,然后在前一半加载完成后加载另一半(创建或初始化第二个或获取更多数据。)。你可能会像我通过一个小chain of functions
所做的那样。
注意:我假设你有一个 DOM,因为 Chrome 应用程序大多数时候都有某种 HTML 或 DOM。
如果您有所了解或需要更多知识,请发表此评论:)