2011-03-06 3 views
2

안녕하십니까! 방금 codeigniter를 가지고 놀기 시작했는데, 지금까지는 모든 것이 너무 분명해 보인다. (위대한 문서들!). 그러나 어떻게하면 $ this-> output-> cache()가 작동하는지 이해하려고 노력하고있다.Codeigniter : 각 컨트롤러 출력에서 ​​캐싱 할 내용을 관리합니다.

내가 원하는 것은 내 인터페이스의 일부 구성 요소 만 캐시하는 것입니다. 예를 들어 컨트롤러에서 header_view, topnav_view, sidebar_view 및 home_view와 같은 구조의 각 부분에 대한보기를로드합니다.

내 컨트롤러에서 $ this-> output-> cache (n)을 사용하면 전체 페이지가 캐시됩니다. header_view를 제외한 전체 페이지를 캐시하고 싶습니다.

답변

1

CodeIgniter Reactor (2.0)의 기능은 built-in입니다. CodeIgniter Reactor의 최신 release을 사용하는 것이 좋습니다.

CodeIgniter Reactor는 EllisLab에서 최근까지 무시 된 프로젝트의 커뮤니티 지사입니다. 공식적으로 개발을 안내하고 코딩 표준을 준수하는지 확인하는 "커뮤니티 청지기"가 후원합니다. 여기에는 많은 새로운 기능이 포함되어 있으며 CodeIgniter의 이전 릴리스 (1.7.3)보다 훨씬 더 멀리 있습니다. 그러나 공식 CI 소스의 한 부분이므로 말하기에는 같은 천으로 자릅니다.

+0

@sholsinger : 답장을 보내 주셔서 감사합니다! 이미 공식 사이트에서 다운로드 한 CI 2.0을 사용하고 있습니다. 코드 명이 Reactor와 어떤 차이가 있습니까? 어쨌든 Greg Aker의 기사를 보면 전체보기를 캐시해서는 안되며, 데이터가있는 배열 만보기로 전송된다는 것을 이해합니다. 맞습니까? – Luciano

+1

수정하십시오. 'all-users-db-result''와 값'$ all_users_result'와 같은 키를주고, 사용하도록 설정 한 캐싱 드라이버를 사용하여 캐쉬합니다. Reactor는 대부분의 개발이 이루어지는 커뮤니티 지점입니다. EllisLab은 일부 또는 모든 Reactor 코드를 CodeIgniter 릴리스로 다시 병합합니다. – sholsinger

+0

@ Luciano는 그렇게 말하면서, 당신이 원하면보기를 캐쉬 할 수 있습니다. 그러나 서버 시간면에서 볼 때 그다지 비싸지 않습니다. 데이터베이스 호출은 뷰 렌더링보다 훨씬 오래 걸립니다. – sholsinger

1

Phil Sturgeon의 캐시 library을 사용하여 원하는만큼 페이지를 캐시 할 수 있습니다.

일반적으로 get/write/delete 함수를 사용하여 내 페이지에 대한 비 사용자 별 데이터베이스 읽기 (여러 모델 호출에서)를 캐시합니다. 하지만 모델/라이브러리 및 종속성 기능을 고려해보십시오.