我正在使用Kohana 2.x,我想为数据库结果实现缓存。为此,我尝试如下,
$cache = Cache::instance();
$siteSettings = $cache->get('siteSettings');
if ( ! $siteSettings)
{
// for 1st request only it entering, this I've verified
$siteSettings = ORM::factory('siteSettings', 1);
$cache->set('siteSettings', $siteSettings, array('siteSettings'), 0);
}
之后如果我尝试以
的形式访问表列$siteSettings->adminEmail;
虽然它再次访问数据库,但即使没有进入上述if
条件。我在哪里做错了?我正在使用文件缓存并确保该文件夹具有可写权限,并且我已验证缓存文件是否具有数据库结果。
编辑:
以下是我的缓存设置
$config['default'] = array(
'driver' => 'file',
'params' => APPPATH.'cache',
'lifetime' => 1800,
'requests' => -1
);
答案 0 :(得分:0)
缓存无效,因为您未设置time period
:
$cache->set('siteSettings', $siteSettings, array('siteSettings'), 0);
您将覆盖时间段3600秒(U设置为0)的默认设置。设置缓存寿命的时间。
答案 1 :(得分:0)
我们应该
// Prevents cached items from being reloaded
protected $reload_on_wakeup = FALSE;
在相应的表模型类中。