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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM