V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
coldmonkeybit
V2EX  ›  问与答

Fabric.js 目前对于对象的缓存策略是如何让性能得到提升的呢

  •  
  •   coldmonkeybit · Mar 29, 2023 · 1131 views
    This topic created in 1137 days ago, the information mentioned may be changed or developed.

    最近在用 Fabric.js 做一些需求,读了一下文档和源码,发现他们正在使用一种缓存策略。

    大概就是为每一个对象都创建一个 cacheCanvas DOM (在启用缓存的前提下),然后每次对于对象的操作都只会在这个 cacheCanvas DOM 里面生效,然后再通过 drawImage 画到真正的 canvas 里面。

    不太明白的一点是,相对于直接将对象画到 canvas 里面,启用了缓存策略不是反而多了一步吗,就是先操作 cacheCavnas DOM ,完了然后还要 drawImage 到 canvas 。
    为什么这两步操作反而比直接画在 canvas 上性能要更好?

    求大佬们答疑,感谢。

    2 replies    2023-03-30 09:38:44 +08:00
    kamilic
        1
    kamilic  
       Mar 29, 2023 via iPhone   ❤️ 1
    离屏绘制?实时绘制的话要走浏览器的渲染流程呀,但是如果离屏就是纯粹数据层面的操作,我理解就是个缓冲之类的结构,可以等到真正需要绘制的时候才一次性计算和输出。

    https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API/Tutorial/Optimizing_canvas#pre-render_similar_primitives_or_repeating_objects_on_an_offscreen_canvas
    coldmonkeybit
        2
    coldmonkeybit  
    OP
       Mar 30, 2023
    @kamilic 很有帮助,感谢
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3144 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 750ms · UTC 03:16 · PVG 11:16 · LAX 20:16 · JFK 23:16
    ♥ Do have faith in what you're doing.