0

我怎样才能使 Zend Cache 在不同的 http 方法之间产生差异?

现在,例如,如果我进行 GET 调用,它会被缓存并且在之后工作当然更快,但是如果我在同一个 uri 之后进行 POST 调用,它会将来自此 uri 上最后一个缓存的 GET 的数据发回给我。

所以基本上,我认为它使用 uri 作为缓存项目的 id,而不是调用的类型。在这种情况下该怎么办?我有一个完整的客户端,我尝试从中缓存结果。

    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);

     }
4

1 回答 1

1

您已明确指定:

        'cache_with_get_variables' => true,
        'cache_with_post_variables' => true,

因此,如果 $_GET 和 $_POST 变量在两个请求上相同,那么您在每个请求上都会收到相同的缓存结果。简单的解决方案是指定一个 $_POST only 参数来区分请求。

于 2012-06-26T14:17:03.347 回答