我有一个巨大的 SVG,它有很多图形元素,鼠标滚轮缩放事件被触发,重新绘制整个 SVG。通过一些分析,我可以分解此类事件所花费的时间,
- 转换 SVG 所需的计算需要 1-2 毫秒。
- 应用转换后,绘制操作需要 500 毫秒-1.5 秒(非常缓慢的用户体验)。
据我了解,绘制操作将取决于 SVG/HTML 的渲染树,在这种情况下它相当大。我想过尝试以下方法来改善用户体验
- 使用“去抖动”,以便在给定的时间间隔内将多个滚动事件合并为一个信号。
- 可能将“requestAnimationFrame”与“去抖动”一起使用。
- 寻找优化 SVG 渲染树的方法,尽管由于其他限制,我觉得这在我的情况下很困难。
这些是正确的方式还是我朝着错误的方向前进?在重新绘制不可避免的情况下,可以使用哪些其他技术来获得更流畅的用户体验?