Javascript Fabricjs在画布上具有多个对象时的性能

Javascript Fabricjs在画布上具有多个对象时的性能,javascript,fabricjs,Javascript,Fabricjs,我正在检查fabricjs,看看它是否适合在画布上渲染图表。性能是我们关注的关键问题之一。在我刚刚构建的一个原型中,当我向画布添加大约3500个对象时,画布变得有点不响应。它可以在4~5秒内渲染,但是选择一个圆并拖动它会非常慢 我想知道这是意料之中的,还是我做错了 原型是一个以圆为顶点,以线为边的图。每条线的末端都有一个小三角形,用来指示方向。因此,总体而言,画布上有6500个对象 这是意料之中的。创建包含图形副本的其他画布。将其渲染为背景图像。当用户选择项目时,仅在对象所在的位置设置剪辑,清除

我正在检查fabricjs,看看它是否适合在画布上渲染图表。性能是我们关注的关键问题之一。在我刚刚构建的一个原型中,当我向画布添加大约3500个对象时,画布变得有点不响应。它可以在4~5秒内渲染,但是选择一个圆并拖动它会非常慢

我想知道这是意料之中的,还是我做错了


原型是一个以圆为顶点,以线为边的图。每条线的末端都有一个小三角形,用来指示方向。因此,总体而言,画布上有6500个对象

这是意料之中的。创建包含图形副本的其他画布。将其渲染为背景图像。当用户选择项目时,仅在对象所在的位置设置剪辑,清除并重新渲染,并且不渲染项目。项目可以在屏幕画布上呈现。操作完成后,您可以将项目渲染回背景。被剪裁的对象渲染时间不会太长,因此背景渲染速度会更快。通过这种方式,你可以在仍然有背景的情况下实时操作这个项目。我认为这是意料之中的。这些对象必须缓存到位图中,以避免不断的光栅化。如果你能在fabricjs中做到这一点,我不知道,但如果缓存,你可能会做到2-3倍。它们是否可以被缓存还取决于对象的显示方式,当然是我的2美分。是的,如果您有6500个“智能”项,则可能会有相当大的滞后,是的,缓存基本项以获得更好的性能。但是6500件!??如果您真的关心性能,那么甚至不要尝试一次显示6500项!。这并不是说它不能做到,而是说,@Blindman67,谢谢你的提示,如果这有帮助的话,我们会试试看。@markE,但我们正计划这样做。WebGL渲染器会帮助我们吗?这是意料之中的。创建包含图形副本的其他画布。将其渲染为背景图像。当用户选择项目时,仅在对象所在的位置设置剪辑,清除并重新渲染,并且不渲染项目。项目可以在屏幕画布上呈现。操作完成后,您可以将项目渲染回背景。被剪裁的对象渲染时间不会太长,因此背景渲染速度会更快。通过这种方式,你可以在仍然有背景的情况下实时操作这个项目。我认为这是意料之中的。这些对象必须缓存到位图中,以避免不断的光栅化。如果你能在fabricjs中做到这一点,我不知道,但如果缓存,你可能会做到2-3倍。它们是否可以被缓存还取决于对象的显示方式,当然是我的2美分。是的,如果您有6500个“智能”项,则可能会有相当大的滞后,是的,缓存基本项以获得更好的性能。但是6500件!??如果您真的关心性能,那么甚至不要尝试一次显示6500项!。这并不是说它不能做到,而是说,@Blindman67,谢谢你的提示,如果这有帮助的话,我们会试试看。@markE,但我们正计划这样做。WebGL渲染器会帮助我们吗?