如何让Zend Cache在不同的http方法之间有所区别?
现在,如果我进行GET调用,它会被缓存并且当然会更快地运行,但是如果我在同一个uri之后进行POST调用,则会将上一次缓存的GET中的数据发回给我在这个uri上。
所以基本上,我认为它使用uri作为缓存项的id而不是调用类型。在这种情况下该怎么办?我有一个restfull客户端,我尝试缓存结果。
protected function _initCache()
{
$dir = APPLICATION_PATH .'/../public/tmp/cache/' ;
$frontendOptions = array(
'lifetime' => 10,
'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' => false,
'automatic_cleaning_factor' => 0,
),
'regexps' => array(
'^/api/' => array('cache' => true),
'^/api2/' => array('cache' => true),
)
);
$backendOptions = array(
'cache_dir' =>$dir,
'hashed_directory_level' => 1
);
$cache = Zend_Cache::factory('Page',
'File',
$frontendOptions,
$backendOptions);
Zend_Db_Table_Abstract::setDefaultMetadataCache($cache);
Zend_Registry::set('Cache', $cache);
}
答案 0 :(得分:1)
您已明确指定:
'cache_with_get_variables' => true,
'cache_with_post_variables' => true,
因此,如果两个请求中的$ _GET和$ _POST变量相同,则每个请求都会收到相同的缓存结果。简单的解决方案是指定一个$ _POST only参数来区分请求。