在自己的进程中初始化SharedWorker?

问题描述 投票:0回答:1

我正在开发一个Web应用程序,需要在浏览器上加载非常大的数据集,此外,我还需要在SharedWorker上加载大量数据。

当前浏览器(Chrome?)的限制为单个进程/选项卡设置了大约 8GB 的已用内存限制。

我的应用程序使用不同的窗口(每台计算机的屏幕一个),并且每个窗口都使用

noopener
属性打开,以确保使用专用进程。这允许每个窗口使用 8GB,而不是跨页面共享限制。

现在我还需要对 SharedWorker 执行相同的操作,目前它与生成它的任何页面共享限制。

我找到的唯一解决方案是打开一个

noopener
弹出窗口,生成 SharedWorker,然后关闭弹出窗口。但这对于用户来说是非常侵入性的。

我尝试使用沙盒 iframe,但一旦添加

allow-same-origin
指令,iframe 就开始与其父窗口共享进程。

有人知道这个问题的任何其他解决方案吗?

google-chrome memory-management shared-worker
1个回答
0
投票

我浏览了一些自己的应用程序,发现我解决这个问题的方式
或者我对

Chrome
所做的类似工作是创建一个新窗口并创建一个在其上运行的 iframe。 (我知道你不想要,但没有它有点难)如果你可以在这里运行两个页面,其中一半数据,然后在这里也可以工作。 另一个解决方案 我进行了一些测试,但不知道它是否完全有效正在加载第一轮数据并将其放入您的DOM中(假设您有HTML或某种生成器),关闭您的
sharedWorker
 serviceWorker
如您所说,然后在前一半加载完成后加载另一半(创建或初始化第二个或获取更多数据。)。你可能会像我通过一个小
chain of functions
所做的那样。

注意:我假设你有一个 DOM,因为 Chrome 应用程序大多数时候都有某种 HTML 或 DOM。

如果您有所了解或需要更多知识,请发表此评论:)

© www.soinside.com 2019 - 2024. All rights reserved.