ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

mise cache 缓存管理命令详解:清理、定位、修剪与任务缓存检查

mise cache 缓存管理命令详解:清理、定位、修剪与任务缓存检查 mise cache 缓存管理命令详解清理、定位、修剪与任务缓存检查【免费下载链接】misedev tools, env vars, task runner项目地址: https://gitcode.com/GitHub_Trending/mi/misemise cache是 mise 中用于统一管理各类缓存工具元数据缓存、环境计算缓存、任务输出缓存的命令组。本文将基于 cache.md 及配套子命令文档结合仓库源码与 cache-behavior.md完整讲解mise cache的四个子命令clear、path、prune、task、相关设置项、环境变量及底层实现原理让读者掌握如何按症状精准清理缓存、预览与执行修剪、以及检查任务缓存命中情况。mise cache命令总览mise cache是 mise CLI 中管理缓存的一级命令。根据 cache.md用法mise cache [SUBCOMMAND]效果read-only不带子命令时只读源码入口src/cli/cache/mod.rs直接运行mise cache不带任何参数会输出当前缓存目录路径。从 mod.rs 的run实现可以看到当没有子命令时它直接打印MISE_CACHE_DIR指向的目录None { // just show the cache dir miseprintln!({}, env::MISE_CACHE_DIR.display()); Ok(()) }支持以下四个子命令子命令功能效果mise cache clear [--task TASK] [TOOL]…删除缓存文件modifies statemise cache path显示缓存目录路径read-onlymise cache prune [-v --verbose] [--dry-run] [TOOL]…移除过期缓存文件modifies statemise cache task [-J --json] TASK检查任务的输出缓存条目read-onlymise cache path查看缓存目录mise cache path用于显示当前缓存目录的绝对路径用法mise cache path别名dir效果read-only源码src/cli/cache/path.rs源码实现非常简洁直接打印环境变量MISE_CACHE_DIR对应的路径path.rspub(super) fn run(self) - Result() { miseprintln!({}, env::MISE_CACHE_DIR.display()); Ok(()) }MISE_CACHE_DIR的默认位置遵循 mise 的 directories 规范~/.cache/mise具体随平台不同。你可以通过设置该环境变量将缓存重定向到自定义目录例如在 CI 中指向可持久化的工作区缓存目录。mise cache clear清理缓存mise cache clear用于删除缓存文件用法mise cache clear [--task TASK] [TOOL]…别名c、clean效果modifies state源码src/cli/cache/clear.rs参数与选项参数/选项说明[TOOL]…需要清理缓存的一个或多个工具例如node、python--task TASK按任务名或模式清除输出缓存条目与TOOL互斥-h --help打印帮助信息清理指定工具的元数据缓存工具缓存位于MISE_CACHE_DIR下按工具名kebab-case 形式组织的子目录中。例如清理 Node.js 的版本元数据mise cache clear node mise ls-remote node # 强制重新拉取远程版本列表从 clear.rs 可以看到指定的工具名会先被转换为 kebab-casep.to_kebab_case()然后拼接出CACHE/tool路径非法转换后为空的工具名会打印警告并跳过。未指定TOOL时则通过cache::cache_dirs()枚举所有缓存子目录。清除所有缓存不带参数运行mise cache clear会清空全部缓存同时还会连带清除环境缓存与任务产物缓存clear.rsif self.tool.is_none() { CachedEnv::clear()?; let task_cache_state crate::dirs::STATE.join(task-artifacts); handle_remove_result(task_cache_state, remove_all_with_retry(task_cache_state))?; }即无参数执行时除了工具元数据缓存还会清空env-cache/环境缓存与state/task-artifacts任务产物缓存。这一点在 cache-behavior.md 中也有说明完整mise cache clear会移除缓存根目录下的所有条目包括其他项目的条目、无法验证归属的遗留条目以及环境缓存。值得注意的细节删除目录时若遇到DirectoryNotEmpty错误例如清理过程中缓存被并发重建源码会将其视为可容忍情况并继续clear.rs而PermissionDenied等其他错误则会正常向上传播——这由 clear.rs 中的单元测试验证。使用--task清除任务输出缓存mise cache clear --task TASK只清除指定任务或匹配模式的输出缓存条目例如mise cache clear --task build根据 clear.rs该模式会先在当前配置中解析任务名/模式逐个任务调用clear_task_cache最后汇总输出清除的条目数与释放的空间大小。--task仅删除能够验证任务归属的条目会跳过无法验证归属的遗留条目详见 cache-behavior.md 的 Task caches 一节。mise cache prune修剪过期缓存mise cache prune用于移除过期的缓存文件用法mise cache prune [-v --verbose] [--dry-run] [TOOL]…别名p效果modifies state源码src/cli/cache/prune.rs默认行为与可配置阈值默认情况下该命令删除30 天内未被访问过的文件。该阈值由MISE_CACHE_PRUNE_AGE环境变量控制对应配置项cache_prune_age默认值为30d[cache_prune_age] default 30d description Delete files in cache that have not been accessed in this duration从 prune.rs 可以看到实现细节cache_prune_age解析为Duration解析失败时回退到 30 天默认值Duration::from_secs(30 * 24 * 60 * 60)。age: settings .cache_prune_age_duration() .unwrap_or(Duration::from_secs(30 * 24 * 60 * 60)),需要区分两个概念cache-behavior.md 的 Cache auto-pruning 一节缓存新鲜度freshness如远程版本列表默认 1 小时刷新一次到期会重新拉取修剪年龄prune age文件未被访问超过该时长才被删除。因此一个过期fresh 已失效的版本列表可能在文件被修剪之前很久就被重新拉取覆盖了二者互不冲突。如果你希望禁用基于访问年龄的自动修剪可设置cache_prune_age 0s。参数与选项参数/选项说明[TOOL]…需要修剪缓存的一个或多个工具例如node、python-v --verbose显示被修剪的文件ArgAction::Count可叠加--dry-run仅预览将要被修剪的内容不实际删除任何文件-h --help打印帮助信息实战用法mise cache prune --dry-run # 预览列出会被删除的过期文件 mise cache prune # 实际执行修剪 mise cache prune -v # 修剪并显示具体删除了哪些文件 mise cache prune node python # 只修剪 node 与 python 的缓存修剪完成后命令会输出汇总信息cache pruned N files, SIZE。与clear类似未指定工具时也会用cache_prune_age修剪环境缓存目录但环境缓存使用自身的 TTLenv_cache_ttl作为修剪年龄prune.rs。在 CI 场景下cache-behavior.md 建议优先缓存已安装的工具这通常节省最多时间元数据缓存对重复 job 也有帮助但缓存键应包含运行平台与项目配置信息并确保管线在无缓存恢复时也能正常工作。mise cache task检查任务输出缓存mise cache task用于检查某个任务的输出缓存条目用法mise cache task [-J --json] TASK效果read-only源码src/cli/cache/task.rs参数与选项参数/选项说明TASK要检查的任务名或模式支持//前缀、workspace 任务语法与:冒号语法展开-J --json以 JSON 格式输出-h --help打印帮助信息表格输出默认情况下mise cache task build会以表格形式展示每个缓存条目task.rs列含义Key缓存键Current是否为当前配置下会命中的条目yes或空Size该条目占用空间Restored历史恢复过的字节数Time Saved缓存该条目时保存的执行时长Last Accessed最后访问时间Outputs该条目关联的输出文件路径当匹配到多个任务时会额外增加Task列如果没有匹配条目则输出No output cache entries for task。任务名解析由resolve_tasks完成task.rs支持expand_colon_task_syntax的:语法、//前缀的模式匹配、workspace 项目任务is_workspace_project_task以及任务别名build_task_ref_map任务不存在时会报错并提示可用mise tasks ls --all --hidden列出所有任务。JSON 输出配合-J可得到结构化结果便于脚本解析mise cache task build -J输出为 JSON 数组每个元素包含task任务显示名、root任务工作目录、entries缓存条目数组由 task.rs 中的serde_json::to_string_pretty生成。任务缓存的配置、缓存键与重跑行为详见 tasks/caching.md。任务输出缓存还受MISE_TASK_CACHE_MAX_AGE环境变量task_cache_max_age设置约束超过该时长的输出缓存条目会在存入新条目后被移除该限制独立于cache_prune_age设为0s或不设置即禁用年龄限制见 settings.toml。三类缓存的行为总览理解mise cache各类子命令关键在于 mise 将三类缓存分开管理cache-behavior.md工具元数据缓存Tool Cache后端backend在MISE_CACHE_DIR下存储的元数据包括远程版本列表以及适用的别名、可执行文件目录、插件exec-env结果等。远程版本列表默认1 小时新鲜由fetch_remote_versions_cache默认1h控制。可通过mise cache clear node强制刷新后执行mise ls-remote node重新拉取。环境缓存Environment Caching实验性设置env_cache默认false启用后将计算出的环境缓存在磁盘上的state/env-cache/目录不在工具元数据缓存内适用于环境提供器昂贵或存在嵌套 mise 调用的场景# ~/.config/mise/config.toml [settings] env_cache true env_cache_ttl 1h # 可选默认 1 小时缓存键包含配置路径与修改时间、解析后的工具版本、相关设置、基础PATH与 mise 版本条目在env_cache_ttl后过期插件声明的监听文件watched files也可使其失效。mise activate与mise exec会建立会话加密密钥并由嵌套命令继承——缓存复用要求密钥一致因此非相关会话不保证命中缓存虽在磁盘上加密但继承会话密钥的进程可以读取。若改动 dotenv 文件或_.source脚本后嵌套命令仍在使用旧环境应清空或禁用该缓存外部服务变更如轮换的密钥不属于文件变更需选择合适的 TTL 或关闭环境缓存。需要强制重算环境时可在启动前设置MISE_ENV_CACHE0 mise exec -- npm test对所有命令禁用则设置env_cache false。注意当前普通环境指令不支持按值设置cacheable false因此时间戳模板在环境缓存有效期内可能被复用。环境插件在MiseEnv返回值中声明可缓存性与监听文件详见 env-plugin-development.md。任务缓存Task Caches任务可基于源文件/输出新鲜度跳过工作或恢复历史输出。使用mise cache task build检查、mise cache clear --task build清除配置、缓存键与重跑行为见 tasks/caching.md。按症状选择缓存操作mise 的官方建议是从与症状相关的缓存入手cache-behavior.md清空版本列表不会重装工具清除环境缓存不会改变配置。常见操作组合mise cache path # 查看实际缓存目录 mise cache clear node # 清除 Node 的工具元数据 mise cache prune --dry-run # 预览过期缓存文件 mise cache clear --task build # 仅清除 build 任务输出缓存 mise cache task build # 检查 build 任务输出缓存条目相关文档Cache behavior三类缓存的完整行为说明。All commands全部 CLI 命令参考。Task output caching任务输出缓存的配置、缓存键与重跑行为。Global flags and argument syntax全局参数与参数语法。【免费下载链接】misedev tools, env vars, task runner项目地址: https://gitcode.com/GitHub_Trending/mi/mise创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表