CI 묻고 답하기

제목 템플릿 parser 관련된 질문입니다.
글쓴이 momo3355 작성시각 2015/06/17 13:55:42
댓글 : 6 추천 : 0 스크랩 : 0 조회수 : 15430   RSS
$str = $this->parser->parse('temp', $data);
$FileName =  'parser.html';
$this->load->helper('file');
write_file($FileName , $str)

디비 정보를 불러오는 시간을 단축시키고 페이지 로딩 속도를 높이기 위해
parser로 처리된 결과를 파일로 만들려고 합니다.

굳이 parser를 위에 처럼 프로그램 안하고

this->parser->parse('temp', $data);   이렇게만 해도 충분한건지 궁금합니다.
 다음글 cron 질문드립니다. (2)
 이전글 Log 파일이 생성되지 않습니다. (7)

댓글

한대승(불의회상) / 2015/06/17 14:45:18 / 추천 0
temp 가 뷰폴더에 있는 temp.php 라면 $this->parser->parse('temp', $data) 로 충분 합니다.

$this->load->view() 의 역할을 $this->parser->parse() 로 대신 하는겁니다.
momo3355 / 2015/06/17 15:17:38 / 추천 0
답변 주셔서 감사합니다. 한대승님 말씀이라면

<h1>My Blog Title</h1> 결과를 보기 위해서

<h1>{blog_title}</h1> 에 값을 불러 오기 위해 db정보를 읽고  [blog_title] 변수에 넣어 parser 로
<h1>My Blog Title</h1>불러오는 것과

위에 과정을 거친 결과를 write_file 페이지를 생성해서  <h1>My Blog Title</h1>정보가 들어 있는 페이지를 불러오는 것과
별다른 차이가 없는건가요?
한대승(불의회상) / 2015/06/17 15:48:44 / 추천 0
CI에서 제공하는 캐싱 방법에는 3가지가 있습니다.

1. 페이지 캐싱 (http://cikorea.net/user_guide_2.1.0/general/caching.html)
2. DB 캐싱 (http://cikorea.net/user_guide_2.1.0/database/caching.html)
3. 캐싱 드라이버를 사용한 캐싱 (http://cikorea.net/user_guide_2.1.0/libraries/caching.html)

1번 방법을 사용하면 프레임워크에서 자동으로 페이지를 캐싱하는데 컨트롤러도 안거치고 라우팅과정에서 처리 합니다.
2번 방법은 DB 쿼리에 대해 캐싱 하는데 DB에 업데이트(추가, 삭제, 수정)가 발생하면 캐시를 재생성하도록 해야 합니다.
3번 방법은 momo3355님이 사용하는 방법과 유사 한데 좀 더 다양한 캐시 드라이버(memcache, apc, file 등)를 제공 합니다.

momo3355님이 사용한 방법은 캐싱드라이버 캐싱과 비슷한데 타임스탬프 개념이 없어서 정적 페이지 생성으로 봐도 되겠네요.
파일로 만들어진 결과는 파일 유무를 확인해서 DB 쿼리를 던지지 않고 데이터를 출력 하므로 어느정도 속도 향상이 있다고 보여 집니다.
momo3355 / 2015/06/17 16:16:33 / 추천 0
한대승님 좋은 정보 감사합니다 ㅜ.ㅜ
제가 이런 작업을 할려는 이유가
FreeMarker 처럼 데이터들을 이용하여 php나 HTML을 동적으로 생성하려는 작업을 할려고 했습니다.
한대승님이 알려주신 캐싱을 통한 작업으로 개발 해보겠습니다. >ㅁ<
변종원(웅파) / 2015/06/17 18:01:19 / 추천 0
데이터가 동적으로 바뀌는 경우에는 바뀐 시점(생성, 수정, 삭제)에 캐시를 재생성해주면 됩니다.
momo3355 / 2015/06/18 09:27:36 / 추천 0
변종원님 답변주셔서 감사합니다. ^_^