cache-files-maxsize 配置项需通过 composer config 命令设置:全局用 --global 参数写入 config.json,项目级写入 composer.json 的 config 段,值必须带单位(如 200m),设为 0 或空字符串可禁用限制。

cache-files-maxsize 配置项在哪设?
这个配置项不是 composer.json 里的,也不在全局命令参数中——它属于 Composer 的「配置系统」,必须用 composer config 命令写入配置文件(composer.json 或全局 config.json)。
直接改 JSON 文件容易出格式错误,推荐走命令行:
-
composer config --global cache-files-maxsize 200M:设全局限制(推荐,影响所有项目) -
composer config cache-files-maxsize 100M:只对当前项目生效(写入当前composer.json的config段)
注意:值必须带单位(K、M、G),不支持纯数字或小数。设成 0 或空字符串会禁用该限制。
为什么设了没效果?常见失效原因
Composer 不会在每次 install/update 时主动清理缓存,cache-files-maxsize 只在「缓存写入前」做预判——如果新下载的 zip 包加上现有缓存会超限,就跳过缓存、直接解压到 vendor(相当于降级为无缓存模式)。
- 它不触发自动清理,所以已有缓存占满磁盘后,这个配置不会帮你删旧文件
- 执行
composer clear-cache后,下次 install 才会重新受该配置约束 - 某些镜像源返回的包体积异常(比如含调试符号的 dev 版本),可能单个包就超限,导致缓存被整体绕过
验证是否生效:运行 composer config --global | grep cache-files-maxsize,确认输出值;再看 composer show -p 输出里 cache-dir 路径下的文件大小变化趋势。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
和 cache-dir、cache-max-age 有什么区别?
这三个是独立开关,常被混用但作用完全不同:
-
cache-dir:指定缓存存哪,不控制大小 -
cache-max-age:控制缓存“过期时间”(秒),影响是否复用旧包,和磁盘空间无关 -
cache-files-maxsize:纯粹是磁盘配额,只在写入前检查总大小,不干预生命周期逻辑
举个典型场景:你设了 cache-max-age=3600(1小时)又设了 cache-files-maxsize=50M,结果可能是——缓存目录里只有几个小包(因为总大小卡死了),但每个都不到 1 小时,所以 Composer 还会坚持用它们;反之,如果缓存已满但全过期了,它会清掉旧包再写新包(只要不超过 maxsize)。
实际占用远超设置值?别怪配置没用
Composer 缓存目录里不止有 zip 包,还有:repo/ 下的 JSON 元数据、files/ 下的 unpacked 源码(用于 symlink 安装)、以及某些插件生成的临时索引。这些都不受 cache-files-maxsize 约束。
- 真正被限制的,只有
files/子目录下以.zip、.tar、.tgz结尾的归档文件 - 如果你用
composer install --no-cache或环境变量COMPOSER_CACHE_DIR=临时覆盖路径,该配置完全不生效 - Windows 上因长路径或权限问题,部分缓存文件可能残留无法清理,导致 du 统计偏高
要真实控盘,得配合定期手动清理或脚本监控 cache-dir 总大小——这个配置只是第一道软闸,不是磁盘管家。










