TIP게시판

제목 간단한 웹페이지 캐쉬처리 라이브러리 (스마티 캐쉬 형태)
글쓴이 sliplife 작성시각 2012/05/10 11:04:21
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 14882   RSS
안녕하세요.

스마티는 많이 썼는데 CI 는 이번에 처음 접하게 되었습니다.
웹페이지 캐쉬를 할일이 있는데 찾아보니 CI 에는 적당한 방법이 보이지 않더군요.
기존의 웹페이지 캐쉬 기능은 페이지에 파라메터별로 다른 결과값이 있을때는 사용이 불가능하고
기본 라이브러리에 있는 캐쉬는 웹페이지 캐쉬와는 웬지 어울리지 않는거 같아서 하나 만들어보았습니다.

CI 경험이 많지 않아서 제가 CI 의 기본 캐쉬 기능을 잘못 이해한것일수도 있고
또한 기존에 동작 되고 있는 웹사이트에 만들어넣은 기능이라 몇몇 전역 변수등이 CI 기본값이 아닐수도 있습니다.
이점 이해하고 봐주시면 좋겠습니다.

이곳에 실력 좋으신 분들이 많으니 이 소스를 좀 더 가다듬어서 공개해주시면 더욱 좋겠지요.


기본 사용 방법은 다음과 같습니다.

application/libraries/ 아래에 첨부된 Pagecache.php 를 넣은후에
사용하고자 하는 컨트롤러에 다음과 같은 코딩을 첨가합니다.
스마티의 캐쉬를 사용해보신 분은 금방 이해하실겁니다.


// 캐쉬 라이브러리 호출 및 설정
// $_POST 파라메터에 따라서 다른 캐쉬 파일을 생성함
$this->load->library('pagecache', array("module"=>"page_name", "param"=>$_POST));

if ($this->pagecache->IsCached()) {
    // 웹페이지가 캐쉬가 되어 있으면 캐쉬된 내용을 output->set_output 으로 출력함
    $this->output->set_output($this->pagecache->GetHTML());
} else {
    // 웹페이지 캐쉬 시간이 만료되었거나 캐쉬가 되지 않은 상태면....
    // model 불러서 DB읽고 여차저차 처리 해주는 기존의 일반적인 코드 삽입
    // view 로드까지 처리하고 나서 ($this->load->view(...))
    // 웹페이지 출력될 내용(output->get_output()) 을 캐쉬 처리
    $this->pagecache->SetCache($this->output->get_output(), 24*60*60);      // 캐쉬 시간을 24시간으로 설정
}


첨부파일 Pagecache.zip (1.2 KB)
 다음글 form validation 에서 한글 체크 규칙 (4)
 이전글 워드프레스 + Codeigniter (4)

댓글

배강민 / 2012/05/10 11:35:18 / 추천 0
오호~ 감사합니다.

전 부분부분 CI의 file cache 로 expire 넣어서 사용하고 있는데 요건 통째로 하는거군요..  쿼리캐쉬는 expire를 줄 수가 없어서뤼..ㅋ

잘 사용하겠습니다.
한대승(불의회상) / 2012/05/10 11:56:19 / 추천 0
좋은 라이브러리 공개해 주셔서 감사 합니다. ^^

잘 사용 하겠습니다.
민상k / 2012/05/22 13:55:26 / 추천 0
저는 CI 에서 제공하는 기본 캐시(with APC)를 이용해 페이지 캐시를 하고 있는데 그것과 비슷한 형태로 구동되는 소스네요.
감사합니다.