Laravel Cache 的缓存文件在到期后是否会自动删除
验证缓存文件是否会自动删除的目的是,防止产生大量的缓存文件,占满磁盘。因为,我最近越来越多的使用 cache 来缓存各类 token。
使用的是 file 作为 CACHE_DRIVER
CACHE_DRIVER=file
首先生成一个 cache
> php artisan tinker
>>> cache(['name' => 'zhongwei'], 1);
=> null
>>> echo cache('name');
zhongwei
此时检索 cache 文件存储的位置
> grep zhongwei -r storage/framework/cache/data/
storage/framework/cache/data/6a/e9/6ae999552a0d2dca14d62e2bc8b764d377b1dd6c:1542767260s:8:"zhongwei";
1 分钟之后,再次获取 cache,已确保 cache 已失效
>>> echo cache('name');
>>>
> grep zhongwei -r storage/framework/cache/data/
>
此时,我们会看到 cache 文件也被删除了。
但是,这并不能证明,cache 文件会被自动清除。于是,我又重复了上面的测试。 但并不主动获取 cache 的值,即不执行 cache('name')。
结果出来了,果然文件并不会被自动删除。只有在调用 cache 时,发现时间戳过期,才会被删除。
结论
- 如果业务类型确实会产生大量 cache 文件,而且复用率极低的话,不要使用 file 作为 CACHE_DRIVER
- Redis 这类会主动做过期回收的 no sql 更适合做 CACHE_DRIVER
- 不得不用 file 时,不要忘了主动清除 cache
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架