페이지 캐싱이란 페이지 전체의 내용을 캐싱하는 것을 말합니다. 페이지 캐싱은 여러 위치에서 발생할 수 있습니다. 예를 들어, 적절한 페이지 헤더를 선택하면 클라이언트 브라우저가 제한된 시간 동안 웹페이지를 캐시할 수 있습니다. 웹 애플리케이션 자체도 웹 페이지 콘텐츠를 캐시에 저장할 수 있습니다. 이 섹션에서는 후자의 접근 방식에 중점을 둡니다.
페이지 캐싱은 프래그먼트 캐싱의 특별한 경우라고 생각할 수 있습니다. 웹 콘텐츠는 레이아웃을 적용하여 생성되는 경우가 많기 때문에 레이아웃에서 단순히 BeginCache(), endCache()만 호출하면 제대로 동작하지 않습니다. 이는 페이지 콘텐츠가 생성된 후 CController::render() 메서드에 레이아웃이 로드되기 때문입니다.
페이지 전체를 캐시하려면 웹 콘텐츠를 생성하는 작업 실행을 건너뛰어야 합니다. 이 작업을 수행하기 위해 COutputCache를 작업 필터로 사용할 수 있습니다. 다음 코드는 캐시 필터를 구성하는 방법을 보여줍니다.
public function filters() { return array( array( 'COutputCache', 'duration'=>100, 'varyByParam'=>array('id'), ), ); }
위 필터 구성으로 인해 필터가 적용됩니다. 의 모든 작업을 컨트롤러에 전달합니다. 플러그인 연산자를 사용하여 하나 또는 몇 가지 작업으로 제한할 수 있습니다. 자세한 내용은 필터에서 확인할 수 있습니다.
팁: COutputCache는 CFilterWidget에서 상속되기 때문에 필터로 사용할 수 있습니다. 이는 도구(위젯)이자 필터임을 의미합니다. 실제로 위젯은 필터와 매우 유사하게 작동합니다. 도구 위젯(필터)은 작업의 콘텐츠가 실행되기 전에 실행되고 실행 후에 종료됩니다.
위는 Yii Framework 공식 가이드 시리즈 31 - 캐시: 페이지입니다. 캐시 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!