如何使用ZendCache缓存不同的http方法,GET和POST?

如何使用ZendCache缓存不同的http方法,GET和POST?,http,zend-framework,caching,Http,Zend Framework,Caching,如何使Zend Cache在不同的http方法之间产生差异 例如,现在如果我做一个GET调用,它会被缓存,之后工作得更快,但是如果我在同一个uri之后做一个POST调用,它会将这个uri上最后一个缓存GET的数据发送给我 因此,基本上,我假设它使用uri作为缓存项的id,而不是调用类型。在这种情况下该怎么办?我有一个restfull客户端,我试图从中缓存结果 protected function _initCache() { $dir = APPLICATION_PATH

如何使Zend Cache在不同的http方法之间产生差异

例如,现在如果我做一个GET调用,它会被缓存,之后工作得更快,但是如果我在同一个uri之后做一个POST调用,它会将这个uri上最后一个缓存GET的数据发送给我

因此,基本上,我假设它使用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);

     }

您已明确指定:

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

因此,如果两个请求上的$\u GET和$\u POST变量相同,则每个请求都会收到相同的缓存结果。最简单的解决方案是指定一个$\u POST only参数来区分请求。

它是自动发生的吗?你有处理缓存的代码吗?到目前为止没有处理程序。它是自动的。现在我正在读关于如何控制它的书。顺便问一下,你知道zend cache在auto上使用的默认键是什么吗?请详细说明你使用的是哪个前端?页面?好的,我添加了一些我在引导中使用的代码。问题是,应该是一个RESTfull Api,这样我就不能区分所使用的方法以外的请求,是不是我错了,因为我知道我可能错了?我想在REST Api上使用页面缓存没有多大意义。为什么不使用核心、类或函数来缓存API中要求较高的操作?您能提供更多详细信息吗?我不太明白。或者至少我应该搜索什么?为什么要在RESTAPI上缓存页面输出?例如,当绘制页面需要时间/资源时(例如迭代一个巨大的数组来创建一个表),就使用页面缓存。在您的案例中,什么是如此强烈而需要页面缓存的?您发出的json响应?您是否可以将需要的部分隔离并缓存?如果是这样的话,您可以使用Zend_Cache_Core或Zend_Cache_Frontend_函数(etc)来缓存特定元素。谢谢,因此我必须阅读更多内容,并从另一个角度进行介绍。