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
相关产品推荐
相关产品推荐

