改cache-ttl不一定生效,因镜像站响应头cache-control:max-age=3600会优先覆盖本地配置,仅当服务端max-age小于cache-ttl或无该头时才起作用;需配合清元数据缓存并验证日志中是否出现downloading行。

改 cache-ttl 就行,但镜像源响应头可能覆盖它——不是设了就一定生效。
为什么改了 cache-ttl 还是不拉新 packages.json?
阿里云、腾讯云等中文镜像站返回的 packages.json 响应头里常带 Cache-Control: max-age=3600。Composer 会优先服从这个服务端指令,忽略你本地配置的 cache-ttl 值。现象就是:你设了 cache-ttl 为 60,但 composer update -v 日志里始终没出现 Downloading https://mirrors.aliyun.com/composer/packages.json。
- 检查镜像响应头:
curl -I https://mirrors.aliyun.com/composer/packages.json | grep Cache-Control - 如果返回
max-age=3600,那 Composer 最多每小时才刷新一次,哪怕你设成 1 也没用 - 私有镜像或自建镜像可关掉该头,但公共镜像无法干预
cache-ttl 在镜像环境下怎么设才有效?
只有当镜像站响应头不带 Cache-Control,或 max-age 值小于你设的 cache-ttl 时,本地配置才起作用。常见可行操作:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 全局设低值(开发机):
composer config -g cache-ttl 300(5 分钟) - 项目级覆盖:
composer config cache-ttl 60(写入composer.json的config段) - 单次命令强制刷新:
composer update --config-cache-ttl=1(注意双横线 + 下划线) - 别用环境变量
COMPOSER_CACHE_TTL—— Composer 不认这个变量名
设完不生效?三步必须做
配置只是告诉 Composer “过期时间”,但旧缓存文件还在磁盘上,它照样用。
- 清元数据缓存:
composer clear-cache,或手动删$COMPOSER_HOME/cache/repo/https---mirrors-aliyun-com-composer/下的packages.json - 确认没被
--no-cache或cache-read-only=true禁用写入 - 加
-v验证:composer update -v,看到Downloading https://...行才算真正触发了刷新
镜像站控制权在服务端,cache-ttl 是 fallback 机制。高频发版时别只靠调这个值,得配合主动清缓存和观察响应头行为——否则容易误判“配置失败”。










