phpsource/템플릿2006. 9. 20. 09:10
written: Jan 28 2002
last modified: Sep 20 2006
템플릿 캐시 정보 디버깅
개발과정에서 캐시와 관련된 여러가지 정보를 실시간으로 확인할 수 있는 디버깅 기능을 1.2.0 버전에 새로이 추가하였습니다.
이 기능을 이용하면 현재 페이지가 생성되기까지의 과정을 캐시와 관련하여 살펴볼 수 있으며 각 템플릿 파일의 변경 여부 등을 알 수 있습니다.
템플릿 캐시 정보를 보려면
아래와 같이 output() 함수에 배열 인수로 "-cache"를 지정합니다.
[code php;gutter:false] output( array( '-cache' ) );[/code]
그러면 현재의 브라우저에 나타난 홈페이지 문서와 관련된 캐시 정보를 아래와 같이 볼 수 있습니다.
<그림1> 템플릿 캐시 정보
템플릿 캐시 정보는 크게 보면 캐시 관련 파일들에 대한 각각의 정보와 캐시 및 템플릿 처리 과정을 나타내는 정보로 구분됩니다.
첫번째 정보로 제공된 캐시 관련 파일(Cache Related Files;CRFs) 정보는 4부분으로 구분됩니다.
① LIBRARY - 후키템플릿툴 클래스 파일
② DOCUMENT - php 스크립트 문서]
③ TEMPLATE - 템플릿 문서
④ INCLUDE - 인클루드 파일
각 캐시 관련 파일에 대한 정보로는 웹루트로부터 시작되는 파일스펙("디렉토리/파일명"), 파일수정일시(file modified time), 파일수정여부 및 캐시형식(cache type)이 있습니다.
만약 디버깅 정보 전부가 아닌 일부 캐시 관련 정보에 대하여만 보고 싶다면 아래와 같이 보고싶은 정보 항목을 명시적으로 지정하면 됩니다.
[code php;gutter:false] $tpl->output( array( '-cache DOCUMENT' ) );[/code]
두번째 정보인 "캐시 및 템플릿 처리 과정(Static Cache & Template Processing Flow)에 관한 정보는 HTML 문서가 생성하기까지의 과정을 아래와 같이 5개의 단계로 나누어 각 단계에서의 캐시 상태를 알려줍니다.
<표1> Static Cache & Template Processing Flow
1단계
cache file
2단계
initial routine
3단계
processing routine
4단계
shutdown routine
5단계
cache file
no exist nothing template compile all templates create cache exist
exist read cache no compile no update cache exist
compile some template files clear cache no exist
some template files are modified compile all templates update cache exist
1단계로 캐시파일의 존재여부를 나타냅니다. 캐시파일이 존재하면 "exist", 존재하지 않으면 "nothing"가 표시됩니다.
2단계로 템플릿툴이 시작되는 초기화 단계에서 해당 템플릿 정보가 없으면 "nothing template", 템플릿 정보를 캐시로부터 읽어들였으면 "read cache", 하나 이상의 템플릿 문서가 수정된 것이 확인되었으면 "some template files are modified"라고 표시됩니다.
3단계로 define() 함수를 수행하면서 각 템플릿을 어떻게 처리했는지는 나타냅니다. 캐시파일이 없었거나 CRFs(캐시관련파일)에 등록된 파일 중 일부가 변경되었다면 모든 템플릿 문서를 다시 컴파일하게 되고 이때는 "compile all templates"라고 표시되며, 변경된 템플릿 파일이 전혀 없었다면 "no compile", CRFs(캐시관련파일)에 등록된 파일 이외의 템플릿 파일이 변경되는 등 프로그램 수행 중간에 템플릿 파일 변경이 확인될 때는 변경이 확인된 템플릿 파일 만 다시 컴파일 하며 이 때는 "compile some template files"라고 표시됩니다.
4단계는 모든 프로그램 수행을 마치고 register_shutdown_function()로 지정된 콜백함수를 실행할 때 컴파일된 템플릿 정보를 어떻게 처리했는가를 나타내줍니다. 처음부터 캐시에 없었다면 새롭게 컴파일된 템플릿 정보를 모두 캐시하며 "create cache"라고 표시됩니다. 변경된 템플릿이 하나도 없었다면 기존에 저장되어있던 캐시를 그대로 놔두며 "no update cache"라고 표시됩니다. 앞단계에서 CRFs(캐시관련파일)에 등록된 파일 중 일부 파일이 변경되어 모든 템플릿을 다시 컴파일하여 "compile all templates"라고 표시되었다면 기존의 캐시를 지우고 새롭게 컴파일한 템플릿 정보를 캐시하며 이때는 "update cache"라고 표시됩니다.
4단계에서 가장 처리하기 힘든 부분이 앞단계에서 CRFs(캐시관련파일)에 등록된 파일 이외의 템플릿 파일이 변경되는 등 프로그램 수행 중간에 템플릿 파일 변경이 확인될 때는 변경이 확인된 템플릿 파일 만 다시 컴파일 하며 이 때는 "compile some template files"라고 표시된 경우입니다. 이 경우에는 현재 컴파일된 템플릿 정보가 혹시 잘못 작성될 수 있는 가능성이 1%라도 있을 수 있다는 생각에 컴파일된 템플릿 정보를 캐시에 기록하지 않으며 기존에 저장되어 있던 캐시도 말끔히 지워버립니다. 이에 따라 다음 차수에 현 홈페이지 문서를 로딩할 때 처음부터 다시 컴파일할 수 있도록 해줍니다. 이 경우에 4단계에 "clear cache"라고 표시됩니다.
5단계에서는 앞 단계가 캐시를 지운 "clear cache" 상태라면 현 홈페이지 문서에 대한 프로그램이 종료된 후 캐시가 존재하지 않으므로 "no exist"라고 표시되며, 그렇지 않으면 캐시가 존재하므로 "exist"라고 표시됩니다.

Posted by 방글24