CAKEPHP3:写入时在控制器中设置缓存持续时间

CAKEPHP3:写入时在控制器中设置缓存持续时间,cakephp,cakephp-3.0,Cakephp,Cakephp 3.0,我在我的项目中使用CakePHP3。我还在不断地学习新东西。今天,我需要使用CakePHP缓存来缓存从数据库检索的数据。每次我加载一个从数据库返回数据的页面,大约需要30到40秒 所以我继续在我的控制器中配置缓存,这将页面加载从30秒显著提高到不到4秒 现在,我要做的是设置缓存的持续时间,使其在1小时后自动清除,以刷新存储在数据库中的新数据 这是我进行缓存的代码: if (!($custstoredata = Cache::read('custstoredata'))) { # Code l

我在我的项目中使用CakePHP3。我还在不断地学习新东西。今天,我需要使用CakePHP缓存来缓存从数据库检索的数据。每次我加载一个从数据库返回数据的页面,大约需要30到40秒

所以我继续在我的控制器中配置缓存,这将页面加载从30秒显著提高到不到4秒

现在,我要做的是设置缓存的持续时间,使其在1小时后自动清除,以刷新存储在数据库中的新数据

这是我进行缓存的代码:

if (!($custstoredata = Cache::read('custstoredata'))) {
  # Code logic
  Cache::write('custstoredata', $customers);
  $this->set('data',$customers);
} else {
  $this->set('data', Cache::read('custstoredata'));
}
在网上做了一些研究之后,我发现我可以使用
Cache::set
来配置持续时间,所以我继续添加了
Cache::set(数组('duration'=>“+1小时”)在我的if语句中,但当我在浏览器中加载页面时,会出现以下错误:

错误:调用未定义的方法Cake\Cache\Cache::set()


我不确定在将缓存写入文件时,控制器实时设置缓存持续时间的正确方法是什么。

我想我回答了我自己的问题

我在
app.php
文件中添加了以下缓存配置:

'reports_seconds' => [
            'className' => 'File',
            'path' => CACHE,
            'serialize' => true,
            'duration' => '+60 seconds',
        ]
一旦我添加了上面的代码,我就用下面的代码修改了if语句,解决了这个问题

if (!($custstoredata = Cache::read('custstoredata'))) {
    # Code logic
    Cache::write('custstoredata', $customers, $config = 'reports_seconds');
    $this->set('data',$customers);
} else {
    $this->set('data', Cache::read('custstoredata'));
}

使用有意义的@ADmad可以简化代码。感谢您提供了一个很好的建议。:)当然,在您的实际代码中,您有
+60分钟
,而不是
+60秒
。。。