캐시에 대해서
ASR의 경우 메인 등에서 게시물 추출에 대한 부담을 줄이기 위해 별도 최근글 함수와 AJAX를 이용하였으나, APMS에서는 별도 추출함수가 없기 때문에 일반 그누보드(영카트)와 동일한 부담을 가집니다.
그래서 APMS에서는 사이트 부담을 줄이기 위해 위젯 등에 대해 캐시를 사용할 수 밖에 없으며, 현재 위젯에 대한 개별 캐시적용외에도 어느 정도 부담을 가지는 메뉴라던가 통계 부분에 대해서는 자체적으로 캐시를 적용하고 있습니다.
APMS에서 불당님의 db_cache 를 함수명만 apms_cache로 변경해서 그대로 적용하고 있습니다. 함수명을 변경한 이유는 /extend 폴더에서 간혹 순서 문제로 불당님 프로그램과 같이 사용할 경우 redeclare 오류가 발생해서 함수명만 변경한 것입니다.
불당님의 db_cache 의 경우 함수 뿐만 아니라 php 파일 출력내용까지 같이 캐시할 수 있기 때문에 상당히 유용합니다.
1. 그누보드5(영카트5)에서 캐시적용시 문제점
그누보드5(영카트5)에서는 html5 규칙에 맞도록 body 내에 불러온 CSS를 head로 모아주는 기능과 동일 CSS에 대해 중복출력을 방지하기 위해 add_stylesheet 함수를 이용해서 CSS를 호출합니다.
그런데, 캐시를 적용할 경우 출력된 결과값만 나오기 때문에 add_stylesheet 함수가 실행되지 않습니다. 그래서 보통 캐시적용하면 CSS가 깨져 보이게 됩니다.
2. CSS 적용문제
위젯에 캐시를 적용하더라도 해당 위젯에서 사용하는 CSS를 add_stylesheet로 호출할 경우 동일한 문제가 발생합니다.
따라서 이를 해결하기 위해 APMS에서는 테마 내 /widget 폴더 안에 widget.css 파일을 만들어 두고, 위젯에서 사용하는 CSS의 경우 모두 여기에 등록해서 사용하도록 하고 있습니다. 그러니 되도록이면 widget.css 파일에 CSS 코드를 등록해서 통합 사용하시기 바랍니다.
물론 캐시를 적용하더라도 add_shtylesheet 함수를 이용하거나 다른 방식으로도 중복실행 등을 방지할 수 있으나, 이 경우 제법 php 처리가 필요하기 때문에 이 보다는 그냥 widget.css 파일에 모아 놓고 사용하는 것이 편하실 것입니다.
Basic 테마에서 사용하는 기본 위젯들의 CSS 코드도 현재 widget.css 파일에 다 들어가 있으며, 추후 별도 배포될 위젯에 대해서도 CSS 코드는 widget.css에 복사해서 넣어서 사용하는 방법으로 안내해 드릴 것입니다.
3. 캐시적용방법
불당님의 db_cache 와 동일하게, 방식입니다. 이 때 시간은 초단위이기 때문에 10분마다 갱신을 원하시면 600 이라고 입력하시면 됩니다.
1) 캐시함수
<?php echo apms_cache('캐시아이디', '시간(초)', '캐시함수');?>
2) 함수를 캐시하는 방법
<?php echo apms_cache('test_cid', 300, 'thema_widget("","widget.php","5|24")'; ?>
3) php 파일 출력결과를 캐시하는 방법
<?php echo apms_cache('site_index', 600, 'include('.THEMA_PATH.'/cache/index.php)'); ?>
위 php 파일 캐시가 현재 아미나 사이트에서 적용하고 있는 캐시입니다. 아미나사이트는 메인의 추출 부분과 사이드의 댓글 등 추출부분 자체를 캐시해서 적용 중입니다. 캐시할 파일은 테마 내에 cache 폴더를 만들고 그 안에 넣어 두었습니다. 첨부로 현재 아미나사이트에서 사용하고 있는 메인과 사이드를 샘플로 올려 드리고 참고하실 분은 참고해 보세요.