zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    Luogu3118:[USACO15JAN]Moovie Mooving
    Luogu4137:Rmq Problem/mex
    Luogu3092:[USACO13NOV]No Change
    BZOJ4321: queue2
    BZOJ4650 : [NOI2016]优秀的拆分
    webpack
    sublime eslint setup
    Sublime themes/ lint themes setup
    sublime text 3
    React
  • 原文地址:https://www.cnblogs.com/sgm4231/p/10194223.html
Copyright © 2011-2022 走看看