我正在使用仪表板,用户可以在其中构建自己的可视化(使用plotly.js)。 有时,这些可视化的复杂性导致渲染时间过长,导致浏览器UI冻结。
我已经在仪表板中为其他任务创建了网络工作者。也许有一种方法可以在web-worker中渲染plotly.js图并将它们返回给主线程?
我知道网络工作者中没有DOM / Canvas功能。但也许有诀窍或你知道更好的方法来防止GUI冻结?也许使用phantomjs将渲染外包给服务器(我从来没有使用它,因此只是猜测它可以与pjs一起工作)。
答案 0 :(得分:1)
您的问题的可能解决方案可能是OffscreenCanvas API:https://developer.mozilla.org/de/docs/Web/API/OffscreenCanvas
您可以从工作人员访问此API,也可以直接将其与您提到的库一起使用。
但是由于浏览器支持非常糟糕(至少在Firefox中,我不知道它目前是如何与其他浏览器一起使用的,https://bugzilla.mozilla.org/show_bug.cgi?id=801176)不支持2d画布上下文(但如果你使用的话)使用不会成为问题的WebGL的库。
作为替代方案,您可以使用在WebWorkers中工作的纯javascript polyfill(它是一种重新实现)的canvas: https://www.npmjs.com/package/canvas-webworker 值得一提的是,没有硬件加速可以应用。
结合起来,可以创造一个好的解决方案。