我正在使用Zend Cache进行页面缓存,但似乎在一段时间后错过了缓存。有一段时间没关系,但我明天回来并点击页面,它不会从缓存中获取内容。为什么呢?
$frontendOptions = array(
'content_type_memorization' => true, // This remembers the headers, needed for images
'lifetime' => NULL, // cache lifetime forever
'automatic_serialization' => true,
'automatic_cleaning_factor' => 0
);
$myPageCache = new Zend_Cache_Frontend_Page(array(
'debug_header' => false,
'automatic_cleaning_factor'=>0,
'content_type_memorization' => true,
'default_options' => array(
'cache' => true,
'cache_with_get_variables' => true,
'cache_with_post_variables' => true,
'cache_with_session_variables' => true,
'cache_with_cookie_variables' => true
)));
$backendOptions = array('cache_dir' => '.' . DIRECTORY_SEPARATOR . 'cache' . DIRECTORY_SEPARATOR);
$cache = Zend_Cache::factory($myPageCache,
'File',
$frontendOptions,
$backendOptions);
$cacheKey = hash('md5', "cache_" . $cachePath); // cachePath is the key I use for the cache
if(!$cache->start($cacheKey)) {
I output html here
$cache->end();
}
答案 0 :(得分:3)
事实上。我读了静态方法
Zend_Cache::factory($frontend, $back, $frontendOptions, $backendOptions, ...)
只有在传递$frontendOptions
参数的字符串时才使用$frontend
。当您正在执行具体实例时,将忽略$frontendOptions
。
如果您仍想将具体实例$myPageCache
传递到工厂,那么您似乎需要将lifetime参数(和其他参数)传递给创建实例的调用。否则,您可以加载单个$frontendOptions
数组并使用:
$cache = Zend_Cache::factory('Page', 'File', $frontendOptions, $backendOptions);
答案 1 :(得分:0)
啊...... opps。
是因为我的'生命'=> NULL,被忽略了吗?