关于javascript:渲染不带GUI冻结的plotly.js图(Web Worker?)

Render plotly.js graph without GUI freezing (Web Worker?)

我正在使用一个仪表板,用户可以在其中建立自己的可视化文件(使用plotly.js)。
有时,这些可视化的复杂性导致较长的渲染时间,从而导致浏览器UI冻结。

我已经在仪表板中为其他任务创建了网络工作者。也许有一种方法可以在Web-Worker中渲染plotly.js图形并将其返回到主线程?

我知道网络工作者中没有DOM / Canvas功能。但是也许有窍门,或者您知道防止GUI冻结的更好方法?也许使用phantomjs将渲染外包给服务器(我从未使用过它,所以只是猜测它可以与pjs一起使用)。


一种可能的解决方案是OffscreenCanvas API:https://developer.mozilla.org/de/docs/Web/API/OffscreenCanvas

您可以从工作人员访问此API,也可以直接将其与您提到的库一起使用。

但是由于浏览器支持确实很差,并且(至少在Firefox中,我不知道当前与其他浏览器的支持情况,https://bugzilla.mozilla.org/show_bug.cgi?id = 801176)2d不支持canvas上下文(但是,如果使用的库使用的WebGL不会成为问题)。

作为替代方案,您可以使用在WebWorkers中可以使用的纯JavaScript画布polyfill(这是重新实现):
https://www.npmjs.com/package/canvas-webworker
值得一提的是,这种方式没有适用的硬件加速。

结合起来,可以创建一个好的解决方案。