发布后批量刷新 200 个图片地址,接口返回 200,第二天仍有 120 个地址返回旧图,任务详情里只记了 100 条。碰到这种情况,我一般先确认改动有没有真的生效。

原因不复杂,刷新接口单次最多接收 100 条 URL,超出部分被静默截断,响应体里没有报错。脚本没有分批,也没核对返回的任务条数。

「CDN 刷新配额」这类改动最怕改一半,回滚脚本先准备好,再动生产。别只看报错的最后一行,往上看几行,真正的起因通常在上面。

for i in $(seq 0 90 180); do
  sed -n "$((i+1)),$((i+90))p" urls.txt > batch.txt
  curl -X POST -d @batch.txt https://cdn.example.com/api/purge
done

同类问题如果隔一段时间又出现,多半是某个定时任务或重启流程把改动冲掉了。把这次用到的命令存进笔记,比记住结论有用,换个环境还能照着走。

改完隔一天再看一次,当场正常不代表能稳住。

具体做法是,把地址按 90 条一批切开,留出余量;每批提交后读返回的 task_id 和条数,对不上就重提;全部提交完隔十分钟抽查十个地址,看是否回源取新图。

最后用这个标准收尾,任务详情里的 URL 条数和提交数一致,抽查地址都取了新图。

作者 9823189