ComfyUI Caching to not Waste 插件新手保姆级教程
1. 插件简介
插件地址: https://github.com/alastor-666-1933/caching_to_not_waste
这个插件简单来说就是一个"记忆小帮手",专门帮你节省时间和显卡资源。
想象一下,你每次做菜都要重新洗菜、切菜、调料,但如果你把洗好切好的菜和调好的料先准备好放冰箱里,下次做同样的菜时就能直接用,省下一大堆时间。这个插件就是这个道理!
它能缓存什么? - 图片(比如调整过大小的图片) - 面具(就是选择区域用的黑白图) - 控制图(像姿势图、深度图这些) - 文字(比如提示词)
能带来什么效果? - 第一次运行可能要40秒,用了这个插件后只要13秒 - 如果是同一张图片的重复操作,甚至能从20秒降到0.3秒 - 省显存,不容易爆内存 - 特别适合配置不高的电脑
2. 如何安装
方法一:ComfyUI Manager 安装(推荐) 1. 在 ComfyUI 界面点击右下角的 "Manager" 按钮 2. 点击 "Install Custom Nodes" 3. 搜索 "caching_to_not_waste" 4. 点击 Install 安装 5. 重启 ComfyUI
方法二:手动安装
1. 找到你的 ComfyUI 安装目录
2. 进入 custom_nodes 文件夹
3. 打开命令行,输入:
git clone https://github.com/alastor-666-1933/caching_to_not_waste
4. 重启 ComfyUI
3. 节点详细解析
3.1 Caching Image to not Waste 节点
这个节点是干嘛的? 这就像一个智能相册管理员。当你对一张图片做了调整(比如改大小、加滤镜等),它会把结果保存起来。下次用同一张原图做同样操作时,直接从"相册"里拿出来用,不用重新处理。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 | | :— | :— | :— | :— | :— | :— | :— | | 原始图片 | original_image | 图片输入 | - | 这是你要做"记号"的主图片,就像给每个文件夹贴标签一样 | 用于生成缓存唯一标识的基准图像 | 把你的源图片连接到这里,比如一张人物照片 | | 执行器 | executor | 图片输入 | - | 这是经过处理后的图片,就像是"成品菜" | 实际需要缓存的处理结果 | 连接resize节点或其他图像处理节点的输出 | | 识别码 | identification | 文字输入 | 有意义的名字 | 给这个缓存起个名字,就像给文件夹命名 | 缓存文件的唯一标识符 | 输入"resize_512"或"头像_小尺寸"这样的名字 | | 强制重建 | force_recreate | 开关 | False | 勾选后会重新做一遍,不用之前保存的 | 忽略现有缓存,强制重新生成 | 当你改了处理步骤想更新缓存时勾选 |
3.2 Caching Mask to not Waste 节点
这个节点是干嘛的? 专门保存面具(就是那些黑白图,用来选择图片的某个区域)。比如你用分割工具做了个人物面具,下次处理同一个人物时就能直接用,不用重新分割。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 | | :— | :— | :— | :— | :— | :— | :— | | 原始图片 | original_image | 图片输入 | - | 用来做标记的原图,确保下次用同一张图时能找到对应面具 | 生成缓存哈希值的参考图像 | 连接你要处理的原始照片 | | 执行器 | executor | 面具输入 | - | 这是做好的面具,黑白图那种 | 需要缓存的遮罩数据 | 连接SAM分割或其他面具生成节点的输出 | | 识别码 | identification | 文字输入 | 描述性名字 | 给面具起个好记的名字 | 面具缓存的唯一标识 | 输入"人物面具"或"background_mask"这样的 | | 强制重建 | force_recreate | 开关 | False | 勾选后重新生成面具,不用旧的 | 强制重新计算面具而非使用缓存 | 调整了分割参数后想更新面具时使用 |
3.3 Caching ControlNet to not Waste 节点
这个节点是干嘛的? 保存控制图,比如姿势图、深度图、线稿图等。这些图生成比较费时间,特别是姿势检测,有了这个就能直接复用。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 | | :— | :— | :— | :— | :— | :— | :— | | 原始图片 | original_image | 图片输入 | - | 用来识别是哪张图的控制图 | 用于关联缓存的原始输入图像 | 连接要分析姿势或深度的原图 | | 执行器 | executor | 图片输入 | - | 生成的控制图,比如骨架图、深度图 | 需要缓存的ControlNet预处理结果 | 连接OpenPose、Depth或Canny边缘检测的输出 | | 识别码 | identification | 文字输入 | 控制类型名 | 说明是什么类型的控制图 | ControlNet类型的标识符 | 输入"openpose"、"depth"、"canny"等 | | 强制重建 | force_recreate | 开关 | False | 重新分析姿势或深度,不用之前的 | 强制重新生成ControlNet图像 | 想用不同的检测设置时勾选 |
3.4 Caching Text to not Waste 节点
这个节点是干嘛的? 保存文字,比如图片标签、描述词等。有些节点会分析图片内容生成描述,这个过程比较慢,缓存后就能直接用。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 | | :— | :— | :— | :— | :— | :— | :— | | 原始图片 | original_image | 图片输入 | - | 用来标记是哪张图的文字描述 | 关联文本缓存的图像引用 | 连接被分析的图片 | | 执行器 | executor | 文字输入 | - | 生成的文字内容,比如标签、描述 | 需要缓存的文本数据 | 连接图像标注或描述生成节点的文字输出 | | 识别码 | identification | 文字输入 | 文字类型 | 说明是什么类型的文字 | 文本缓存的分类标识 | 输入"tags"、"caption"、"prompt"等 | | 强制重建 | force_recreate | 开关 | False | 重新分析图片生成文字,不用旧的 | 忽略缓存强制重新生成文本 | 想要更新图片描述时使用 |
3.5 Caching Combined Image to not Waste 节点
这个节点是干嘛的? 有时候处理结果需要同时依赖两张图片,比如把A图覆盖到B图上。这个节点就是为这种情况设计的,用两张图一起做标记。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 | | :— | :— | :— | :— | :— | :— | :— | | 第一张图片 | original_image_1 | 图片输入 | - | 用来做标记的第一张图 | 生成组合缓存标识的第一个图像 | 连接背景图或底图 | | 第二张图片 | original_image_2 | 图片输入 | - | 用来做标记的第二张图 | 生成组合缓存标识的第二个图像 | 连接要叠加的图或前景图 | | 执行器 | executor | 图片输入 | - | 两张图合成后的结果 | 需要缓存的图像合成结果 | 连接图像混合或叠加节点的输出 | | 识别码 | identification | 文字输入 | 合成描述 | 描述这个合成操作 | 组合缓存的唯一标识符 | 输入"overlay"、"blend"、"composite"等 | | 强制重建 | force_recreate | 开关 | False | 重新合成两张图,不用之前的结果 | 强制重新执行合成操作 | 调整了合成参数后想更新结果时使用 |
3.6 Caching Conditioning to not Waste 节点
这个节点是干嘛的? 保存条件信息,这个比较高级,主要是保存一些控制生成的参数设置,避免重复计算。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 | | :— | :— | :— | :— | :— | :— | :— | | 原始图片 | original_image | 图片输入 | - | 关联的图片,用来做标记 | 生成条件缓存标识的参考图像 | 连接相关的输入图片 | | 执行器 | executor | 条件输入 | - | 处理后的条件信息 | 需要缓存的conditioning数据 | 连接CLIP文本编码或其他conditioning节点 | | 识别码 | identification | 文字输入 | 条件描述 | 说明是什么条件设置 | conditioning缓存的标识符 | 输入"positive_prompt"、"negative_prompt"等 | | 强制重建 | force_recreate | 开关 | False | 重新处理条件,不用之前的 | 强制重新计算conditioning | 修改了提示词或参数后想更新时使用 |
4. 使用技巧和建议
4.1 识别码命名建议
- 用有意义的中文或英文:
人物面具、resize_512、openpose_detect - 避免重复:每个缓存必须有唯一的识别码
- 分类命名:按功能分类,如
img_resize、mask_person、ctrl_pose
4.2 什么时候用缓存
适合用缓存的情况: - 同一张图片要做多次不同的生成 - 工作流程中有重复的处理步骤 - 电脑配置不高,经常内存不够 - 需要批量处理相似图片
不适合用缓存的情况: - 每次都用不同的图片 - 经常要调整处理参数 - 磁盘空间有限
4.3 性能优化建议
- 把最耗时的步骤放在缓存节点里,比如分割、姿势检测
- 定期清理缓存文件夹:
ComfyUI/output/caching_to_not_waste - 根据需要设置自动删除期限(在ComfyUI设置里)
5. 常见问题解答
Q:缓存文件存在哪里?
A:在 ComfyUI/output/caching_to_not_waste 文件夹里,可以手动删除来清理缓存。
Q:为什么缓存没有生效? A:检查以下几点: - 识别码是否唯一且没有重复 - 原始图片是否是同一张 - 是否误开了"强制重建"
Q:缓存文件会占用很多空间吗? A:是的,缓存会保存实际的图片和数据文件,建议定期清理或设置自动删除。
Q:可以在不同工作流程间共享缓存吗? A:可以!只要使用相同的原始图片和识别码,不同工作流程可以共享缓存。
Q:第一次运行还是很慢怎么办? A:这是正常的,缓存插件只能加速第二次及以后的运行。第一次必须完整执行一遍来生成缓存。
6. 实战案例
场景一:人物换装工作流
- 使用
Caching Image to not Waste缓存调整后的人物图片 - 使用
Caching Mask to not Waste缓存人物分割面具 - 使用
Caching ControlNet to not Waste缓存姿势控制图 - 这样换不同服装时,前面的步骤都能直接跳过
场景二:批量风格转换
- 对每种风格设置不同的识别码
- 缓存图片预处理结果
- 缓存文字描述和标签
- 批量处理时大幅节省时间
记住:这个插件的核心思想就是"一次处理,多次使用",合理使用能让你的ComfyUI工作流程快得飞起!