CI 묻고 답하기

제목 [초보]케싱이용방법
글쓴이 헛발이 작성시각 2010/10/07 18:47:52
댓글 : 8 추천 : 0 스크랩 : 0 조회수 : 24570   RSS
오랫만에 인사 올립니다...
또 이렇게 질문할때만 글을 남기니 대단히 죄송스럽고요...
질문 올립니다..

부분적인 css내용을 관리자 화면에서 등록하고 수정하고 하는걸 하고 싶어서 머리 굴려 보고 있습니다.
결과는 관리화면에서 textarea에 부분적인 css내용을 등록하면 사이트에 반영되는것입니다..

제가 생각한 바로는 이렇습니다...

1. 관리자 화면에서 css 글자들을 입력받습니다.
2. 내용을 DB에 등록과 동시에 ci의 케싱을 이용하여 css내용의 html파일을 파일로 만들어 놓습니다.
3. 사이트의 윗 부분에서  <link rel='stylesheet' type='text/css' media='all' href='/css/read' /> 이렇게 css콘트롤의 read메소드를 읽습니다.
4. read메소드에서는 케싱된 css.html파일을 읽어 드립니다.
5. 그리고 그것을 화면에서 출력합니다.

이렇게 하면 될거 같아서 구현해 보려구 하는데...
이 생각이 잘못된 생각인가요? 프로그램을 잘 모르니 마냥 추상적이기만 하네요...

한번 구현해 보려고 했는데 2번에 케싱하는것부터 메뉴얼에 너무 짧게 설명되어 있어서.. 적당한 사용방법을 몰라 이렇게
글을 올립니다...

의견을 듣고 싶은데요...
부탁드립니다..
 다음글 __construct() 함수 로딩 관련.... (5)
 이전글 redirect 하면서 post로 값을 넘기는 방법이 ... (3)

댓글

헛발이 / 2010/10/07 19:28:20 / 추천 0
일단 여기까지는 테스트가 되었는데요....

1. 도메인.com/main/ 여기에서 불러 오는 main뷰에  이런 내용을 넣습니다..
<link rel='stylesheet' type='text/css' media='all' href='/css/' />
<div id="test">연습입니다..</div>


2. 그리고 도메인.com/css 즉 css콘트롤러에 이런 내용을 넣습니다.
class Css extends Controller {
    function __construct()
    {
        parent::Controller();
    }
    
    function index()
    { 
        header("Content-Type: text/css; charset=UTF-8");
        echo "#test { border: 1px solid red; }";
    }
}

이렇게 해서 css가 적용되는것을 확인 했습니다...
그래서 제 생각엔 css콘트롤러에서 케생파일을 읽어 드리거나...하면 될거 같은데요..
케싱안 하고 그냥 DB의 내용을 불러 와도 그렇게 문제되지 않을까요?

여기저기서 DB의 내용을 불러 오면 페이지부를때 마다 너무 쿼리를 해대는거 같아서요...

어떤방법이 좋은지 의견을 물어 볼께요...
변종원(웅파) / 2010/10/07 22:05:45 / 추천 0

관라자에서 css를 입력할때 db에 입력하지 않고 그냥 파일에 쓰셔도 됩니다.
css.html에 쓰고 수정할때는 파일 불러들이면 되구요.

텍스트큐브가 그런 구조로 되어 있습니다. 원본이 있고 캐시 디렉토리에 실제 사용하는 부분이 있구요.
굳이 db에 넣지는 않습니다.

헛발이 / 2010/10/08 08:45:57 / 추천 0
음... 그렇군요...
감사합니다..
헛발이 / 2010/10/08 11:44:41 / 추천 0
하나더 질문 드릴께요...
캐싱되면서 파일이 만들어지는데.. 그 파일명을 만들어 지면서 알수 있을까요?
왜냐 하면요.. 캐싱된 파일을 프로그램 상에서 삭제 하려고 하다 보니 파일명을 몰라 어떻게 지워야 할지
잘 모르겠어요...

캐싱파일명을 저장해두면 그걸로 수정할수 있을거 같은데 ...
아니면 캐싱되는 파일명을 제가 읨의로 줄수 있나요?
변종원(웅파) / 2010/10/08 12:57:34 / 추천 0
캐싱파일은 설정한 시간이후에 자동삭제가 됩니다. 삭제부분은 신경쓰실 필요가 없습니다.

$this->output->cache(5);

위와 같이 선언을 하면 현재시간 기준 5분전에 캐싱된 파일은 삭제가 되도록 Output 라이브러리에
_display_cache()함수가 작성되어 있습니다.
헛발이 / 2010/10/08 13:02:50 / 추천 0
그렇긴 한데요...
관리자가 css를 수정 한다음에 그것이 적용되려면 5분 기다려야 해서...
수정하면 바로 적용되게 하려구 삭제를 하려고 한거거든요..

뭐 그다지 차이야 별루 없겠지만요...

음... 예를 들면 config파일이라던가.. 라우팅파일이라던가.. css일 같은거요..
그런걸 케싱을 이용해서 보존하고 관리 하는게 좋을지..
그냥 DB에서 불러와 이용하는게 좋을지... 잘 분간이 안가서 물어 봅니다...

누가 속시원히 답변해 줬음 너~~~~~~~~~~~~~무 좋겠어요...
변종원(웅파) / 2010/10/08 13:49:10 / 추천 0
아무래도 캐싱이 부하는 덜 갈겁니다. db는 select가 계속 일어나야 할테니까요.
css 같은 것을 db에 넣고 접속할때 마다 읽어온다는 것은 정상적인 방법은 아닙니다.

그리고 Output.php 파일 열어보시면 파일을 삭제할 수 있는 방법을 찾으실 수 있습니다.
_display_cache() 함수안에 expire된 파일 지우는 루틴이 있습니다.

위와 같은 경우라면 ci 캐싱기능을 사용하려고 하지마시고 관리자페이지에서 css를 수정하거나
입력했을때 바로 css.html파일을 쓰고 아파치서버단에서 html을 압축하여 전송하는 gzip방식을
이용하시는 것이 좋을 것 같습니다. http://blog.naver.com/xacti?Redirect=Log&logNo=80025052848

헛발이 / 2010/10/08 14:14:42 / 추천 0
그렇군요.. 그냥 직접 파일로 만들어 버리는게 좋겟군요..
여러모로 감사합니다..