WordPress主题开发:PHP更新强制刷新后仍不生效求助
我太懂这种改完代码刷新N次都看不到变化的抓狂感了!你已经排查了OPcache和强制刷新,那咱们再从几个容易被忽略的角度入手试试:
检查WordPress自带/第三方缓存
很多性能插件(比如WP Rocket、W3 Total Cache)或者部分主题本身就内置了静态缓存功能。先去WP后台看看有没有开启这类缓存,有的话手动清空一波。另外,要是网站根目录的wp-content下有cache文件夹,直接删掉里面的所有文件也能试试。彻底清空浏览器缓存(别只依赖CTRL+F5)
有时候CTRL+F5可能没完全绕过浏览器缓存,尤其是浏览器开了缓存优先的设置。可以试试这俩方法:- 按F12打开开发者工具,切换到「网络」标签,勾选「禁用缓存」,再刷新页面
- 直接清空浏览器全部缓存(一般在设置的「隐私与安全」里找「清除浏览数据」,只选缓存文件就行)
确认OPcache禁用配置真的生效了
你改了php.ini,但有没有重启Apache或者PHP服务?OPcache的配置修改必须重启服务才会生效。重启后再打开phpinfo(),确认opcache.enable和opcache.enable_cli都是Off状态,别白忙活一场。检查Apache的静态文件缓存规则
看看网站根目录或者主题目录下的.htaccess文件,有没有给CSS、JS这类静态文件设置长缓存的规则,比如:<FilesMatch "\.(css|js|png|jpg|gif)$"> Header set Cache-Control "max-age=31536000, public" </FilesMatch>如果有,先临时把这段注释掉(加
#前缀),或者把max-age改成0,保存后再刷新页面试试。排查文件权限问题
有时候主题文件更新后,服务器因为权限问题读不到新文件,反而一直加载旧缓存。确保主题文件夹权限是755,文件权限是644,避免因为权限限制导致的缓存异常。切换默认主题测试定位问题
临时切换到WordPress自带的Twenty系列主题,比如Twenty Twenty-Four,然后修改它的style.css加个简单样式,看看更新能不能立刻生效。如果生效了,那问题大概率出在你开发的主题本身,比如主题里写了自定义的缓存逻辑,或者某些钩子函数导致内容被缓存了。
内容的提问来源于stack exchange,提问作者Sean D

