ThinkPHP不同版本缓存标签失效与清除机制有何具体差异?
- 内容介绍
- 文章标签
- 相关推荐
本文共计981个文字,预计阅读时间需要4分钟。
`TP5.1` 的 `Cache::clear('tag_name')` 实际上是 `伪标签清除` —— 它仅清除内存中维护的标签索引,但不会主动扫描并删除对应的缓存键;而 `TP6` 开始重构了标签底层,`Cache::tag('user')-`
- TP5.1:用
Cache::clear('tag_name')清除标签,仅清索引,需配合Cache::rm()手动删键,或直接删runtime/cache/目录 - TP6+:推荐统一用
Cache::tag('user')->clear(),它会遍历所有带该标签的缓存键并逐个删除(前提是缓存驱动支持标签,如file、redis) - 注意:
Cache::clear()(无参数)在所有版本都只清默认通道的全部缓存,与标签无关
php think clear 不清理缓存标签数据
命令行工具 php think clear 默认只清 runtime/cache/、runtime/log/、runtime/temp/,但它**完全不感知缓存标签结构**。即使你用了 Cache::set('key', $val, 3600, ['user']),执行该命令后,标签索引文件(如 runtime/cache/tag/ 下的 PHP 文件)仍可能残留,导致后续 Cache::tag('user')->clear() 找不到目标键。
本文共计981个文字,预计阅读时间需要4分钟。
`TP5.1` 的 `Cache::clear('tag_name')` 实际上是 `伪标签清除` —— 它仅清除内存中维护的标签索引,但不会主动扫描并删除对应的缓存键;而 `TP6` 开始重构了标签底层,`Cache::tag('user')-`
- TP5.1:用
Cache::clear('tag_name')清除标签,仅清索引,需配合Cache::rm()手动删键,或直接删runtime/cache/目录 - TP6+:推荐统一用
Cache::tag('user')->clear(),它会遍历所有带该标签的缓存键并逐个删除(前提是缓存驱动支持标签,如file、redis) - 注意:
Cache::clear()(无参数)在所有版本都只清默认通道的全部缓存,与标签无关
php think clear 不清理缓存标签数据
命令行工具 php think clear 默认只清 runtime/cache/、runtime/log/、runtime/temp/,但它**完全不感知缓存标签结构**。即使你用了 Cache::set('key', $val, 3600, ['user']),执行该命令后,标签索引文件(如 runtime/cache/tag/ 下的 PHP 文件)仍可能残留,导致后续 Cache::tag('user')->clear() 找不到目标键。

