You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP网页持续被缓存,禁用Opcache、APC及配置缓存规则后仍未解决

可能的原因及排查方案
  • 首先排查Apache自带的缓存模块是否开启
    你之前只配置了缓存头,若Apache开启了mod_cache、mod_cache_disk/mod_cache_mem等服务端缓存模块,会直接返回缓存内容不执行PHP逻辑。可执行以下命令检查模块:
apache2ctl -M | grep cache

如果返回了缓存相关模块,执行a2dismod cache cache_disk cache_mem禁用后重启Apache即可。

  • 检查是否存在上层代理/CDN缓存
    如果你的站点接入了CDN、Nginx反向代理或者服务商自带的站点加速服务,普通请求会直接命中节点缓存,而Shift+F5强制刷新会携带no-cache头回源请求。你可以在服务器本地执行curl请求测试:
curl -v http://127.0.0.1/你的PHP页面路径

多次执行如果返回内容每次都动态更新,说明问题出在上层节点缓存,调整对应节点的缓存规则即可。

  • 排查Apache配置的头冲突问题
    你在全局Apache配置中添加的Header set Cache-Control "max-age=0, public"规则,优先级高于PHP代码输出的头,其中public属性允许所有中间节点缓存响应内容,和你PHP中配置的no-store规则直接冲突。同时你.htaccess里的缓存规则仅匹配了html、js、css等静态文件,未覆盖PHP文件。建议先删除Apache全局的那条Cache-Control配置,再测试访问。

  • 检查浏览器响应状态和头信息
    打开浏览器F12控制台的「网络」面板,查看普通访问时的响应状态码:如果是304,说明浏览器认为本地缓存未过期;如果是200 (from disk cache/from memory cache),说明返回的是本地缓存。同时检查响应头中的Cache-Control值是否符合你预期的配置,确认没有被中间层篡改。

  • 排查其他PHP缓存扩展或框架缓存
    你仅禁用了Opcache和APC,还需检查是否存在XCache、eAccelerator等其他缓存类扩展,执行php -m可查看所有已加载的扩展。同时确认你的PHP项目是否启用了框架自带的页面缓存、静态缓存功能,或者自研的文件缓存逻辑。

  • 排查第三方服务端缓存组件
    检查服务器是否部署了Varnish、Redis页面缓存等第三方缓存组件,这类组件默认会缓存动态响应内容,普通请求不会走到PHP逻辑。

内容的提问来源于stack exchange,提问作者immeckro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 21:24:00