求助:Artifactory绕过本地缓存重复请求docker-remote的list.manifest.json
检查缓存过期策略
确认Docker远程仓库的缓存过期设置,尤其是manifest类文件的TTL配置。可能是近期修改了缓存规则,导致list.manifest.json和manifest.json的缓存提前失效,触发重新拉取。可以在Artifactory仓库配置的「Cache」标签下查看Max Cache Age和Cache Eviction Policy,对比之前的配置是否有变更。验证manifest文件的缓存状态
在Artifactory的「Artifacts」界面搜索对应的list.manifest.json,查看其属性中的「Cached」状态和「Expiration Date」。如果显示已过期,说明缓存周期到了;如果状态正常但仍被拉取,检查是否有强制刷新的操作记录(比如手动触发了缓存清理)。查看请求日志里的客户端头信息
打开Artifactory的请求日志(通常路径是$ARTIFACTORY_HOME/logs/request.log),过滤Docker远程仓库的请求条目,看客户端是否发送了Cache-Control: no-cache或If-None-Match这类强制校验的头信息。部分CI/CD工具或镜像拉取脚本可能会添加这类头,导致Artifactory跳过本地缓存去源站校验。排查版本或插件更新影响
近期是否升级过Artifactory版本或安装了新插件?某些版本变更可能会影响manifest文件的缓存逻辑。可以对比升级前后的行为,必要时回滚版本测试,确认是否是版本更新导致的缓存异常。校验源站manifest的ETag变化
Artifactory会根据源站返回的ETag判断缓存是否有效,如果源站的list.manifest.json或manifest.json的ETag发生变更,即使本地缓存存在,Artifactory也会重新拉取。可以用curl请求源站的对应文件,对比ETag和Artifactory缓存中的记录是否一致。
内容的提问来源于stack exchange,提问作者Jill

