2011-04-28 3 views
1

안녕하세요, 목표는 맞춤 경로를 사용하여 페이지의 생성 된 버전이나 캐시 된 버전을 얻는 것입니다.맞춤 경로를 통한 컨트롤러 캐싱

이렇게하려면 같은 컨트롤러를 대상으로 두 번째 사용자 지정 경로를 만들었습니다.

Router::connect('/get/*', array('controller' => 'mycontroller', 'action' => 'myaction')); 
Router::connect('/getnocache/*', array('controller' => 'mycontroller', 'action' => 'myaction')); 

, 그래서 수행하여 문제는 $ cacheAction으로이 (캐시 아무것도를) 무시되지 않도록 :

var $cacheAction = array(
    'get/*' => '1 hour' 
); 

일반적으로 모든 요청은 캐시 얻을 $ cacheAction으로 사용 :

var $cacheAction = '1 hour'; 

을 나는 뭔가를 놓치고 있는가? 아니면 간단하지 않을까?

답변

2

동일한 컨트롤러/동작/매개 변수 정보에 대해 서로 다른 두 개의 링크를 만드는 것은 바람직하지 않습니다. 페이지를 요청할 때 문제가 발생하지는 않지만 CakePHP를 사용하여 링크를 만들면 항상 첫 번째 일치 항목이 사용되므로 항상/get/* URL을 얻을 수 있습니다.

그러나 해결책이 있습니다. 두 번째 매개 변수에서 더 많은 항목을 간단하게 지정할 수 있습니다.

Router::connect('/get/*', array(
    'controller' => 'mycontroller', 
    'action' => 'myaction', 'useCache' => true 
)); 

Router::connect('/getnocache/*', array(
    'controller' => 'mycontroller', 
    'action' => 'myaction', 'useCache' => false 
)); 

추가 매개 변수를 기반으로 요청을 캐시할지 여부를 쉽게 결정할 수 있습니다. 컨트롤러의 매개 변수에 액세스 할 수있는 방법을 정확히 알지 못합니다. (마지막으로 CakePHP를 사용한 지 오래되었습니다.)하지만 가능하다는 것을 알고 있습니다. 컨트롤러에 $this->params['useCache']과 같은 내용 일 것입니다.

+0

답변을 완료하려면 $ this-> cacheAction = [MIXED]를 통해 매개 변수에 액세스하십시오. – Flatlin3

관련 문제