1. 程式人生 > >Laravel Cache 的快取檔案在到期後是否會自動刪除

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