프래그먼트 캐싱이나 페이지 캐싱을 사용하다 보면 몇 군데를 제외하고 전체 부분의 출력이 정적인 상황에 자주 부딪히게 됩니다. 예를 들어 도움말 페이지에 정적 도움말 정보가 표시될 수 있지만 표시되는 사용자 이름은 현재 사용자의 이름입니다.
이 문제를 해결하기 위해 사용자 이름을 기준으로 캐시된 콘텐츠를 일치시킬 수 있지만, 사용자 이름을 제외하면 캐시된 콘텐츠의 대부분이 동일하기 때문에 이는 귀중한 공간을 크게 낭비하게 됩니다. 웹 페이지를 여러 조각으로 잘라서 별도로 캐시할 수도 있지만 이러한 상황은 페이지와 코드를 매우 복잡하게 만듭니다. 더 좋은 방법은 [CController]에서 제공하는 동적 콘텐츠 기능을 사용하는 것입니다. 동적 콘텐츠는 조각 캐시에 포함되어 있어도 조각 출력이 캐시되지 않음을 의미합니다. 포함된 콘텐츠를 캐시에서 가져오더라도 동적 콘텐츠가 항상 동적으로 유지되도록 하려면 매번 다시 생성해야 합니다. 이러한 이유로 우리는 어떤 방법이나 기능을 통해 동적 콘텐츠를 생성해야 합니다.
CController::renderDynamic()을 호출하여 원하는 위치에 동적 콘텐츠를 삽입하세요.
...别的HTML内容... <?php if($this->beginCache($id)) { ?> ...被缓存的片段内容... <?php $this->renderDynamic($callback); ?> ...被缓存的片段内容... <?php $this->endCache(); } ?> ...别的HTML内容...
위에서
는 유효한 PHP 콜백을 의미합니다. 현재 컨트롤러 클래스의 메서드나 전역 함수를 가리키는 문자열 이름일 수 있습니다. 클래스의 메소드를 가리키는 배열 이름일 수도 있습니다. 다른 모든 매개변수는 renderDynamic() 메서드에 전달됩니다. 콜백은 단순히 표시하는 대신 동적 콘텐츠를 반환합니다.$callback
위는 Yii Framework 공식 가이드 시리즈 32 - 캐싱: 동적 콘텐츠의 내용입니다. 더 많은 관련 내용은 PHP 중국어 웹사이트(www.php)를 참고하세요. .CN)!