Node Caching(节点缓存):为 ComfyUI 节点带来执行优化的实用插件

插件6个月前发布 小马良
302 0

在使用 ComfyUI 构建复杂工作流时,你是否遇到过某些节点重复执行、浪费资源的情况?尤其是在涉及条件分支、开关节点或动态输入的情况下,ComfyUI 往往无法准确判断哪些节点真正需要重新运行。

今天要介绍的这个自定义节点插件——Node Caching节点缓存,正是为解决这一问题而生。它能帮助你为几乎任何类型的节点添加缓存机制,避免不必要的重复执行,提升整体效率。

什么是 Node Caching?

Node Caching 是一个 ComfyUI 插件,它通过为节点添加缓存功能来优化执行流程。其核心原理是:

  • 在节点运行前,根据当前输入值生成一个唯一的“指纹”;
  • 如果该指纹此前已存在缓存中,则跳过执行,直接复用之前的输出;
  • 否则正常执行,并将结果保存到缓存中。

这种方式特别适用于耗时较长或频繁出现的节点,比如采样器(如 KSampler),尤其在多个工作流共享同一节点类型时,效果更为明显。

使用方法

操作非常简单:

  1. 右键点击任意节点;
  2. 选择 “转换为缓存”(Convert to Cached);
  3. 节点标题会自动加上 (caching) 标记,表示已启用缓存。

一旦某个节点类型被标记为缓存类型,所有同类型节点(无论在哪个工作流中)都将默认启用缓存功能。

⚠️ 注意:缓存仅在当前服务器运行期间生效,重启后将失效。

缓存行为说明

为了控制内存占用,每个节点类型最多保留 4 个最近的不同输入对应的输出缓存

此外,请注意以下关键行为:

  • 缓存存储的是输出的引用,而非副本。如果你在下游修改了输出内容,可能会导致意外行为;
  • 若节点输出依赖外部因素(如文件、API 响应、未固定种子的随机数等),缓存将不会感知这些变化,仍可能返回旧结果;
  • 指纹匹配有可能出现误判(即使输入有变化仍认为一致)。如遇此类情况,建议反馈相关节点以改进指纹逻辑。

如何实现永久缓存?

如果你希望某些节点类型始终启用缓存,可以编辑插件目录下的 classes_to_cache.txt 文件,将希望自动缓存的类名写入其中。每次刷新网页时,系统会自动为这些类启用缓存,无需手动设置。

适用场景举例

  • 多个采样器节点在不同工作流中反复运行相同参数;
  • 静态图像加载节点(如 LoadImage)在多个流程中重复调用;
  • 条件分支中可能被多次触发但输入不变的节点;
  • 文本编码节点(CLIPTextEncode)重复处理相同提示词。
© 版权声明

相关文章

暂无评论

none
暂无评论...