Drupal缓存重建日志配置方法及Drush触发场景相关问题咨询
Drupal缓存重建(高版本原名缓存清理)常见触发时机
- 管理员在后台点击「清除所有缓存」按钮手动操作时
- 模块执行安装、卸载、启用、禁用操作完成后
- 核心、模块、主题的配置表单提交保存后,涉及系统配置变更的场景会自动触发
- 实体类型、字段结构更新时,比如新增内容类型、新增自定义字段操作后
- 业务代码调用核心缓存API的
cache_invalidate()、cache_clear_all()方法时 - 命令行执行Drush的
drush cr(缓存重建)或drush cc(清理指定缓存bin)命令时 - Cron计划任务运行时,若配置了对应缓存清理规则也会触发
配置缓存清理操作自动生成日志
有两种常用实现方案:
- 方案1:直接安装社区贡献的Cache Logs模块,安装启用后会自动记录所有缓存清理操作的操作人、触发时间、清理范围等信息,日志默认写入Drupal内置的watchdog日志表,可在后台「报告 > 最近日志消息」页面查看。
- 方案2:自定义开发实现(适合需要自定义日志格式、自定义存储路径的场景):
- 在自定义模块的
.services.yml文件中注册事件订阅器,示例配置如下:
services: your_module.cache_clear_subscriber: class: Drupal\your_module\EventSubscriber\CacheClearSubscriber arguments: ['@logger.factory'] tags: - { name: event_subscriber }- 新建对应的事件订阅器类,监听
kernel.cache_clear事件,每次缓存清理触发时自动写入自定义日志即可。
如果需要将缓存清理日志单独存储到外部文件,可以额外配置Drupal的日志通道,将缓存相关日志输出到指定路径的文件中。
- 在自定义模块的
计划缓存重建与Drush的相关说明
- 关于计划任务自动缓存重建是否调用Drush:Drupal默认自带的Cron计划任务执行缓存重建时,不会调用Drush,默认是直接调用核心缓存API完成操作。如果是你自行在服务器层面配置的定时任务,指定执行
drush cr命令做缓存重建,这种场景才会调用Drush。 - 关于Drush的使用场景:Drush并不仅限于用户手动操作使用,它完全支持被脚本、服务器计划任务、CI/CD流水线等自动化程序调用,大量自动化部署、自动站点维护的场景都会用到Drush的命令行能力实现无人值守操作。
内容的提问来源于stack exchange,提问作者Robert West
相关产品推荐
相关产品推荐

