【发布时间】:2021-04-26 20:07:31
【问题描述】:
假设我使用记忆功能将数据存储在缓存中。
当用户在站点中时,我希望他能够知道他所看到的数据的年龄。因此,如果他不喜欢旧数据,他可以选择获取新数据。
有一件事 - 我可以尝试检查缓存的文件日期,但我不确定文件夹结构和文件名是如何制作的。可以通过检查缓存的工作原理来尝试理解,但也许有一些事情可以解决?没找到。
【问题讨论】:
-
我也在寻找解决方案,我想我会在数据库的缓存表中添加时间戳。
假设我使用记忆功能将数据存储在缓存中。
当用户在站点中时,我希望他能够知道他所看到的数据的年龄。因此,如果他不喜欢旧数据,他可以选择获取新数据。
有一件事 - 我可以尝试检查缓存的文件日期,但我不确定文件夹结构和文件名是如何制作的。可以通过检查缓存的工作原理来尝试理解,但也许有一些事情可以解决?没找到。
【问题讨论】:
/**
* 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:
$parts = array_slice(str_split($hash = sha1($cacheKey), 2), 0, 2);
$path = storage_path('framework/cache/data').'/'.implode('/', $parts).'/'.$hash;
【讨论】: