글쓴사람 관리자
글쓴시간2005년 7월 4일 오전 6시 45분 24초
    제목[응답]Template_ 캐쉬
상속한 템플릿객체에서나.. 새로 생성한 다른 템플릿객체이더라도..
또.. 다른 웹경로에서 실행하더라도..

$cache_dir 의 절대 경로가 같다면 $tpl->clearCache('site_index'); 또는 $tpl->clearCache('aaa'); 하면 해당 캐쉬는 갱신됩니다.

$cache_dir 값과 삭제아이디 값만 맞으면 갱신됩니다.




만일 갱신이 안됐다면.. 원인으로 생각할 수 있는 것이..

Template_.class.php 소스 247번째줄 _rmdir() 메서드에서.. 권한 문제 등으로 인해 shell_exec('rm -rf "'.$path.'/"*') 명령이 제대로 수행되지 않았기 때문일 수 있습니다.

만일 그런 경우라면 245번째줄

if (!$php_safe_mode) {



if (0) {

으로 바꿔서 테스트해보시기 바랍니다.


-------------------------------------------


질문을 정확히 이해를 한 것인지 모르겠는데..


메인 페이지에.. 헤더 바디 푸터가 있고..

바디에 6개의 게시판이 출력되고 있다고 했을 때..

바디에 캐쉬를 설정(바깥쪽)하고.. 바디를 구성하는 6개의 게시판 각각에도 캐쉬를 설정(안쪽)했다면..

안쪽 캐쉬중 어느 하나 또는 여러 개를 갱신해도 바깥쪽 캐쉬로 인해 페이지 출력은 그대로 유지됩니다.

그러니까.. 바깥쪽만 캐쉬를 설정하거나 안쪽만 설정하거나 아니면 갱신시 바깥쪽 안쪽 전부 clearCache() 해줘야 합니다.




아래처럼 바깥쪽 안쪽 전부 캐쉬를 설정했다고 했을 때

$tpl->setCache('body', 0, 'main_body');
$tpl->setCache('bbs3', 0, '3rd_board');


3번째 게시판에 새 게시물이 등록될 때,

$tpl->clearCache('main_body', '3rd_board');

또는

$tpl->clearCache('main_body');
$tpl->clearCache('3rd_board');

이렇게 해서 안쪽 3번 게시판 캐쉬와 바깥쪽 바디 캐쉬를 같이 갱신할 수 있습니다.


-------------------------------------------


$cache_dir 디렉토리 하위의 '%cache' 디렉토리 내에.. 경로별, 실행파일 별로 생성된 캐쉬파일들이 들어 있습니다.

그런데...

삭제아이디를 사용할 경우.. 삭제아이디 정보는 '%clear' 디렉토리에서 관리됩니다.

$tpl->clearCache('clear_id');

했어도. '%cache' 디렉토리 하위의 캐쉬파일들은 그대로 남아있으니까..

'%cache' 디렉토리만 봐서는 그것이 유효한 캐쉬파일인지 알 수 없습니다.

또 '%clear' 디렉토리는 삭제아이디별로 관리되는데.. 이것이 어느 캐쉬파일에 대응하는 삭제아이디인지 알려면.. 그 삭제아이디를 설정한 php코드를 봐야 확인 되므로..

유효한 캐쉬파일 목록을 뽑아내는 관리프로그램을 만드는 것은 대단히 어려운 일인거 같습니다.



-------------------------------------------


답변을 다 한 거 같은데.. 천천히 읽어 보시구요..

그리고 템플릿 클래스와 게시판 클래스가 is-a 관계인가, 상속하는게 바람직한가 하는 이야기가 예전에 있었던 거 같네요.

좋은 한 주 되시기 바랍니다.
양요한 감사합니다. 크게 도움이 되었습니다.
캐쉬 관리에 대해서는 캐쉬매니저를 두고,
캐쉬 생성/갱신/삭제 를 모두 매니저에게 의뢰하여 처리하는 방법으로 방향을 잡았습니다.
뭐 그렇게 대단한 기능이 필요했던건 아니고,
어떤 페이지를 대상으로 캐쉬하고 있으며 이들의 캐쉬를 수동으로 갱신했으면 했거든요.

다시한번 친절하신 장문의 답변에 감사드립니다.
05-07-08 16:38
    이름
비밀번호
  Template_ 캐쉬 [1] 05-06-28 1146 양요한
>> [응답]Template_ 캐쉬 [1] 05-07-04 1588 관리자
 
Since 2003-03-03 hosted on vultr.com