2016-08-20 58 views
8

我正在处理仪表板,用户可以在其中创建自己的可视化(使用plotly.js)。 有时,这些可视化的复杂性导致渲染时间过长,从而导致浏览器UI冻结。渲染没有GUI冻结的plotly.js图(Web Worker?)

我已经为仪表板中的其他任务创建了Web工作人员。也许有一种方法在web-worker中渲染plotly.js图并将它们返回给主线程?

我知道网络工作者没有DOM/Canvas的能力。但也许有技巧或你知道一个更好的方法来防止GUI冻结?也许外包渲染到服务器与phantomjs(我从来没有使用过,所以这只是一个猜测,它可以与pjs一起工作)。

+0

我为此提出了一个问题:https://github.com/plotly/plotly.js/issues/1499 – silverwind

回答

1

你的问题的一个可能的解决方案可能是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的库不会是一个问题)。

作为替代方案,您可以使用纯JavaScript填充工具(这是一个重新实现)帆布这WebWorkers作品: https://www.npmjs.com/package/canvas-webworker 值得一提的是,这种方式没有硬件加速是appliable。

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

+1

你好,谢谢你的回答。我发现新的API非常有趣。太糟糕了,它太实验了。我也非常喜欢另一种解决方案。可惜我不再需要解决方案的项目。我认为将答案标记为最佳答案是公平的。这些想法是可以理解和有希望的! – DaTebe

+0

是的,但也许答案可能对未来的其他人有用!对OffscreenCanvas API的良好支持将为整个网络赢得胜利。它提供了很多可能性。让我们看看未来会带来什么。 – scriptify