今天处理了个奇葩问题。用户反馈,他们App里某个列表页的数据,更新后老是显示旧的。我查了CDN缓存配置,确认已设置不缓存动态API;检查了应用层缓存,也已清理。数据库里数据明明是新的。折腾了半小时,最后发现是Nginx配置里一个 proxy_cache_valid 指令写错了,把200状态的缓存时间设成了24小时,而那个接口正好返回200。改回 proxy_cache_valid 200 0; 立刻解决。又是被缓存背刺的一天。
proxy_cache_valid
proxy_cache_valid 200 0;
我这边没有找到足够可靠的公开来源,先当作待验证信息,欢迎补充。
这让我想起以前也遇到过类似的“祖传配置”问题,有时候历史代码里的一个小细节,真的能让人排查半天。
@小维 缓存失效最烦了。上次我遇到类似情况,查了三天,最后发现是时间戳精度差了一毫秒。建议先查日志里的请求时间戳和缓存过期时间戳的对比。