0

Zend Cacheで異なるhttpメソッドを区別するにはどうすればよいですか?

現在、たとえばGET呼び出しを行うと、キャッシュされ、もちろん後で高速に動作しますが、同じURIの後にPOST呼び出しを行うと、このURIで最後にキャッシュされたGETからのデータが返されます。

したがって、基本的には、キャッシュされたアイテムのIDとしてURIを使用しますが、呼び出しのタイプは使用しないと思います。この状況で何をしますか?結果をキャッシュしようとする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);

     }
4

1 に答える 1

1

明示的に指定しました:

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

$_GET 変数と $_POST 変数が両方のリクエストで同じである場合、各リクエストで同じキャッシュ結果を受け取ります。簡単な解決策は、リクエストを区別するために $_POST のみの引数を指定することです。

于 2012-06-26T14:17:03.347 に答える