ComfyUI-NodeSnapshots:複雜流程卡頓救星:把節點變成圖片緩存

當 ComfyUI 工作流動輒幾百個節點,拖拉節點時幀率掉到個位數是常態。NodeSnapshots 把閒置的節點先渲染成透明畫布,移動時直接重用圖片,把一張圖的幀率從 20 拉回 60。

Repository image for SparknightLLC/ComfyUI-NodeSnapshots

當 ComfyUI 的工作流膨脹到幾百個節點,畫面停頓幾乎是必然。Sparknight 開源的 NodeSnapshots 是一個純前端擴充套件,目標就是把這種拖拉時的卡頓感處理掉。它不動推論邏輯、不改工作流格式、不裝額外模型,把閒置節點預先渲染成一張張透明畫布,平移、縮放、拖動節點時直接重用圖片,跳過昂貴的重繪。

在約 350 節點的實測流程裡,繁忙區塊的平均幀率從 20 FPS 拉到接近 60,改善幅度並非「感覺順」而是的明顯跳升。早期版本其實試過一次截整張圖的做法,速度更快,但截全圖那一刻會卡住;NodeSnapshots 改用逐個節點、分批閒置排程來拍快照,避開那個停頓,同時保留重用帶來的流暢感。

它處理了幾個關鍵取捨:

  • 滑鼠停留、被選取、正在編輯、媒體預覽以及執行中的節點一律維持即時渲染,避免圖片覆蓋掉需要即時更新的狀態。
  • 只有真正改到內容(值、大小、連線、繪製設定)才會把該節點的圖片標記失效;單純移動位置或縮放視窗不會清掉緩存。
  • 視窗移動中會以 100 毫秒為週期檢查緩存是否可用,停下來才回到逐幀檢查,避免邊拖邊做完整校驗。

需要注意的限制:

  • 快照以圖形座標的全細節拍攝再縮放顯示,畫面大幅放大時文字會變糊,可以透過 capture pixel ratio 取捨清晰度與記憶體。
  • 切換調色盤、換字型、整個工作流被替換時緩存會清空,第一次進入子圖也可能觸發字型刷新造成短暫等待。
  • 如果你同時裝了其他會覆蓋同樣繪製方法的擴充,可能互相影響。

對需要反覆在大型 Stable Diffusion、影像生成流程裡微調節點位置的使用者來說,這類擴充幾乎是工作流跑得起來的必要條件。安裝方式只需把資料夾放到 ComfyUI/custom_nodes/ComfyUI-NodeSnapshots,重啟後到 Settings > NodeSnapshots 開關即可。

GitHub

Categories: 開源, ComfyUI, Image,