先说结论,可能不少人已经知道了:WordPress 挂了对象缓存和 CDN 之后,清缓存的顺序要从最里层往外——先 Redis ,再服务器整页缓存( Nginx FastCGI ),最后 CDN 。顺序反了,清了也白清。 我前阵子反复遇到一个场景:后台改完文章提示成功,前台打开还是旧内容。第一反应清缓存,一层两层三层全清一遍,还是旧的。加个 ?v=123 马上就新了,去掉参数又变回旧的。 折腾了一段时间才把链路想明白。 三层缓存各自的性格: CDN:缓存整页 HTML ,按 URL 做键,有自己的 TTL Nginx FastCGI cache:也是整页 HTML ,按 URL 做键,落在磁盘上 Redis 对象缓存:缓存的是数据库查询结果。注意,它默认没有 TTL ,写进去就一直躺着,直到被显式删掉 坑就藏在第 3 条里: 你改了文章,数据库里已经是新内容 Redis 里还是旧数据 这个时候有访客或者爬虫进来 PHP 从 Redis 捞到旧数据,渲染出一份"全新的旧页面",丢给 Nginx 缓存了起来 你事后去清缓存,就算把...