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

Drupal 8 异常缓存问题求助:关闭页面缓存后内容仍不更新

解决Drupal 8关闭页面缓存后Twig时间仍被缓存的问题

这种情况我之前排查过好几次,大概率是Twig独立缓存或者管理员缓存豁免配置没到位导致的,咱们一步步来解决:

1. 先强制关闭Twig模板缓存

Drupal的页面缓存和Twig缓存是分开的,哪怕你关了页面缓存,Twig依然会缓存编译后的模板文件。你可以先在settings.php里添加以下配置彻底禁用Twig缓存:

$settings['twig_cache_disable'] = TRUE;
$settings['twig_debug'] = TRUE; // 可选,开启后能直观看到模板缓存状态

添加后记得清空一次Drupal缓存,之后再刷新页面看时间是否变化。注意:生产环境不要长期开这个,排查完可以改回去。

2. 检查管理员用户的缓存豁免设置

Drupal默认会给超级管理员跳过页面缓存,但如果这个配置被修改了,超管访问也会被缓存。你可以去:

配置 → 性能 → 缓存
查看是否勾选了为经过身份验证的用户启用缓存,如果勾了,直接取消这个选项,保存后再刷新页面测试。

3. 排查第三方缓存模块/服务

如果你安装了Redis、Memcache这类后端缓存,或者Varnish、Boost这类反向代理缓存,它们可能会绕过Drupal自带的缓存设置。临时禁用这些模块,或者清空它们的缓存池,再测试时间是否正常更新。

4. 检查自定义代码的缓存逻辑

如果你的主题或自定义模块里有预处理函数,不小心设置了永久缓存标记,也会导致模板被缓存。比如类似这样的错误代码:

use Drupal\Core\Cache\Cache;

function mytheme_preprocess_page(&$variables) {
  // 错误示例:设置了永久缓存
  $variables['#cache']['max-age'] = Cache::PERMANENT;
}

把max-age改成0(完全不缓存)或者根据业务需求设置合理的缓存时间,比如60(缓存1分钟):

$variables['#cache']['max-age'] = 0;

5. 排除浏览器本地缓存

最后试试硬刷新页面(Ctrl+F5 / Cmd+Shift+R),或者用无痕模式打开页面,排除浏览器本地缓存的干扰。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:01:44