hTemplate – 4.2.캐시 환경 설정

캐시 정보

후키템플릿 생성자의 두 번째 인수로 캐시 정보가 전달됩니다. 이중에서 update 및 active_cache_handler 설정은 후키템플릿에서 사용하는 설정값이며 나머지는 모두 후키캐시핸들러(클래스명 hCacheFile)에서 사용하는 설정값입니다. 후키템플릿 생성자를 실행할 때 후키캐시 클래스에 대한 객체가 생성되며 이 때 캐시 정보를을 후키캐시 클래스의 생성자에 넘겨주게 됩니다.

< 캐시 정보의 기본값 및 설정예 >
항목 용도 기본값 설정예
active_cache_handler 캐시핸들러 사용유무 true false, _TPL_CACHE_NO, _TPL_CACHE_DYNAMIC, _TPL_CACHE_STATIC
or not
update 캐시 업데이트 false false or not
id 웹페이지를 구분하기 위한 인식자 HW_CACHE_ID 임의의 문자열
period 가비지콜렉션을 수행하는 주기 259,200(3일) 초단위로 설정
maxlifetime 캐시 데이터의 유효 기간 2,592,000(30일) 초단위로 설정
path 캐시가 저장되는 디렉토리 /tmp/ 접근가능한 모든 디렉토리
mode 캐시 파일의 퍼미션 0777 0644
active_cache_compress 캐시 파일의 압축 유무 true false or not

1.2.0 버전부터 mode와 active_cache_compress 설정이 추가되었으며, active_cache_handler에 설정할 수 있는 값은 이전의 true, false 외에 상수 _TPL_CACHE_NO, _TPL_CACHE_DYNAMIC, _TPL_CACHE_STATIC가 추가되었으며 기본값이 true에서 _TPL_CACHE_STATIC으로 변경되었습니다.

캐시 정보를 지정하는 예를 들어보면 아래와 같습니다.

active_cache_handler

캐시핸들러를 사용하지 않으려면 false를 설정한다. 그렇지 않으면 캐시핸들러가 기본적으로 동작합니다. 1.2.0 버전부터는 기본적으로 정적 캐시(Static Cache)로 동작합니다.

< active_cache_handler 설정값에 따른 동작 >
설정값 동작 가능 버전
true 정적 캐시 all
false 캐시 없음 all
_TPL_CACHE_NO 캐시 없음 1.2.0
_TPL_CACHE_DYNAMIC 동적 캐시 1.2.0
_TPL_CACHE_STATIC 정적 캐시 1.2.0

update

  • ‘update’ => false or not(set to true if update cache)

update값이 false가 아니라면 이전에 사용하던 캐시 데이터를 말끔히 지워버리고 템플릿 파일로부터 템플릿을 다시 분석하여 변화된 템플릿 정보를 반영하여 캐시에 저장합니다. 템플릿 내용이 바뀌게 되면 이를 자동으로 감지하여 캐시 내용을 갱신하기 때문에 update 인수는 특별한 이유가 없으면 지정할 필요가 없습니다. 현재 페이지에 대한 캐시만을 강제로 갱신시킬 때 사용하시기 바랍니다.

id

  • ‘id’ => cache ID

후키템플릿 클래스에서 캐시를 호출할 때 위와 같이 id를 지정하였다면 후키템플릿 클래스 내부에서 후키캐시 객체를 생성할 때는 다음과 같은 방법으로 id를 재지정한 후 재지정된 id를 후키 캐시 클래스 생성자에 전달해 줍니다.

대부분의 경우에는 id를 지정할 필요가 없습니다. 클래스 내에서는 각 웹페이지를 구분하기 위하여 해당 웹페이지의 URL의 pass를 사용합니다. 예를 들어,

  • 캐시하고자 하는 웹페이지의 URL: http://www.phpclass.com/php/class.php
  • 캐시클래스에 전달되는 캐시 id: php@class.php()

후키템플릿에서는 현 문서 URL의 pass “phpclass/phpclass.php”에서 패스구분자 “/”를 “@”로 바꾼 후 후키캐시로 전달합니다. 따라서 하나의 URL로 하나의 웹페이지가 생성되는 경우에는 생성자에 id를 지정할 필요가 없습니다. 그러나 만약 하나의 URL로 여러 개의 웹페이지가 생성된다면 이를 구분할 수 있는 인식자가 추가로 필요할 것입니다. 이 역할을 하는 것이 생성자에 지정되는 id입니다. 예를 들어 id를 “1”라고 지정하게 되면 이 때 생성되는 캐시 파일명은 아래와 같을 것입니다.

  • 캐시하고자 하는 웹페이지의 URL: http://www.phpclass.com/php/class.php
  • 생성자에 지정된 id값: “1”
  • 캐시클래스에 전달되는 캐시 id: php@class.php(1)

period

  • ‘period’ => garbage collection period

가비지콜렉션은 서버에 많은 부담을 주는 동작 중에 하나입니다. 따라서 매번 수행하기 보다는 일정한 주기마다 정기적으로 수행하는 것이 바람직하다고 생각합니다. 이러한 이유로 후키캐시에 설정되어 있는 주기는 3일(초단위로는 259,200초)로 기본 설정되어 있습니다. 이에 따라 3일에 한번씩 가비지 콜렉션을 수행하게 됩니다. 이 주기를 더 길게하거나 짧게 하고 싶으면 period의 값을 초단위로 지정하여 주면 됩니다.

maxlifetime

  • ‘maxlifetime’ => cache valid time

maxlifetime은 각 웹페이지에 대한 캐시 만료 기한을 나타내는 설정값입니다. 해당 웹페이지의 캐시 데이터를 사용한 후 maxlifetime에서 설정된 시간이 지나도록 다시 사용되지 않는다면 이 캐시 데이터는 쓰레기로 간주됩니다. 따라서 가비지콜렉션을 수행할 때 이러한 쓰레기는 모두 삭제됩니다. maxlifetime은 30일(초단위로는 2,592,000초)로 기본 설정되어 있습니다. 이 시간을 더 길게하거나 짧게 하고 싶으면 maxlifetime의 값을 초단위로 지정하여 주면 됩니다.

maxlifetime이 필요한 경우를 예를 든다면 웹페이지의 URL이 변경되었을 때 이전에 사용하던 URL에 대한 캐시 데이터는 다시 사용되지 않을 것입니다. maxlifetime은 이와같이 다시 사용되지 않는 캐시 데이터를 정리하는데 유용하게 사용될 것입니다.

path

  • ‘path’ => path to cache

캐시가 저장되는 장소는 기본적으로 “/tmp/”입니다. 이 장소를 변경하고 싶을 때 path에 해당 경로를 지정해 주면 됩니다. 이 때 물론 해당 경로에 대한 퍼미션은 미리 적절히 조정해 주셔야 합니다. 리눅스에서 캐시 디렉토리에 대하여 퍼미션을 조정하려면 아래와 같이 하시기 바랍니다.

  • mkdir /tmp
  • chown nobody:nobody hCache
  • chmod 707 hCache

소유자가 “nobody”가 아니라면 해당되는 소유자를 지정해 주면 됩니다. 이것은 httpd.conf를 참조바랍니다.

mode

  • ‘mode’ => cache file permission(default is 0777),

1.2.0 버전부터는 새로운 설정값인 mode를 통해 캐시파일을 생성할 때 퍼미션 모드를 설정할 수 있도록 해줍니다. 기본값은 0777로 설정되어 있습니다.

< 캐시파일 퍼미션의 기본값 및 설정예 >
항목 용도 기본값 설정예
mode 캐시 파일의 퍼미션 0777 0644

active_cache_compress

  • ‘active_cache_compress’ => false or not(default is true)

1.2.0 버전부터는 새로운 설정값인 active_cache_compress를 통해 캐시파일의 압축 유무를 설정할 수 있도록 해줍니다. 기본값은 true로 설정되어 있습니다.

gz 라이브러리 함수 gzcompress, gzuncompress를 이용하여 압축합니다. 압축에 사용하는 함수는 특별히 정해진 것은 아니고 향후 버전에서 템플릿 툴 내부에서 상황에 따라 변경될 수 있습니다.

서버가 이 함수들을 지원하지 않는다면 active_cache_compress 값을 true로 설정하더라도 압축하지 않고 저장합니다.

< 캐시파일 압축기능의 기본값 및 설정예 >
항목 용도 기본값 설정예
active_cache_compress 캐시 파일의 압축 유무 true false or not

답글 남기기