【问题标题】:Laravel - how much time passed since cacheLaravel - 自缓存以来经过了多少时间
【发布时间】:2021-04-26 20:07:31
【问题描述】:

假设我使用记忆功能将数据存储在缓存中。

当用户在站点中时,我希望他能够知道他所看到的数据的年龄。因此,如果他不喜欢旧数据,他可以选择获取新数据。

有一件事 - 我可以尝试检查缓存的文件日期,但我不确定文件夹结构和文件名是如何制作的。可以通过检查缓存的工作原理来尝试理解,但也许有一些事情可以解决?没找到。

【问题讨论】:

  • 我也在寻找解决方案,我想我会在数据库的缓存表中添加时间戳。

标签: caching laravel laravel-4


【解决方案1】:
/**
 * Get the full path for the given cache key.
 *
 * @param  string  $key
 * @return string
 */
protected function path($key)
{
    $parts = array_slice(str_split($hash = md5($key), 2), 0, 2);

    //return $this->directory.'/'.join('/', $parts).'/'.$hash;
    return Config::get('cache.path') .'/'.join('/', $parts).'/'.$hash;
}


public function getTest() {

    $users = DB::table('shops')->remember(1, 'key')->get();

    echo 'Now: ' . date('H:i:s') . '<br>';
    echo 'Cache saved at: ' . date('H:i:s', filemtime($this->path('key'))) . '<br>';

}

path() 函数是从 FileStore.php 文件中复制和编辑的。我更好的方法是扩展它,但我不确定如何。如果有人告诉,那就太好了。

【讨论】:

  • 谢谢! Laravel 5.5 使用 sha1() 而不是 md5()
【解决方案2】:

对于 Laravel 5:

$parts = array_slice(str_split($hash = sha1($cacheKey), 2), 0, 2);
$path = storage_path('framework/cache/data').'/'.implode('/', $parts).'/'.$hash;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多