말러캐시 0.90 - 그누보드 속도를 올리는 cache 시스템 > 그누4 팁자료실

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요.
나누면 즐거움이 커집니다.

말러캐시 0.90 - 그누보드 속도를 올리는 cache 시스템 정보

말러캐시 0.90 - 그누보드 속도를 올리는 cache 시스템

첨부파일

m3cache.utf8.zip (2.7K) 451회 다운로드 2010-04-16 00:57:35
m3cache.euckr.zip (2.6K) 282회 다운로드 2010-04-16 00:57:35

본문

[모듈소개]
페이지에서 DB에 부하를 많이 주지만 매번 불러올 필요가 없는 정보들이 있습니다.
예를 들어 최근게시물이 잔뜩 나열된 메인 페이지가 있을 때, 그 페이지를 캐싱을 해두고
10초에 한번씩만 리프레시 시켜주면 DB 부하를 매우 줄일 수 있습니다.

말러캐시는 일단 한 번 php코드를 실행시켜서 html코드를 생성해두고, 그 주기가 지나지
않았을 경우에는 저장해둔 html코드를 뿌려주는 방식으로 작동합니다. 물론 그 html코드는
DB에 저장해두지만, 저장해둔 html코드를 불러오는 쿼리만 날리면 되니 훨씬 빨라지게 됩니다.

[설치방법]
1. 압축을 풀어 그누보드 루트에 복사
 - extend 폴더에 m3cache.extend.php
 - m3cache 폴더에 _common.php, dbinstall.php, m3counter.m3cache.php, img폴더

2. 홈페이지주소/m3cache/dbinstall.php를 주소창에 쳐서 1회 실행
 - 캐시용 DB를 생성하는 쿼리입니다.

[사용방법]
1. 캐시를 할 부분의 코드를 잘라내서 /m3cache/example.m3cache.php라는 파일에 저장
 - 원하는이름.m3cache.php 라는 형태의 이름으로 저장하면 됩니다.

2. 잘라낸 부위를 대신해 m3cache("example", 10); 이라고 입력
 - 10초 단위로 캐시하라는 의미입니다. 두번째 인수는 생략하면 60초가 기본값입니다.
 - 3번째 인수는 변수입니다. 레벨에 따라 각각 다른 화면이라면 다음과 같이 합니다.
    m3cache("example", 10, $member[mb_level]);
    3번째 인수를 생략하면 모든 사용자에게 똑같은 화면이 보여집니다.
    레벨이나 기타 조건에 따라 다르게 보이는 화면이라면 꼭 3번째 인수를 넣어주세요!

3. 캐시하는 부분에 필요한 변수가 추가로 있다면 m3cache.extend.php 3번째 줄에 더 넣어줘야 합니다.
 - 예를 들어 global $g4, $member, $mmm, $temp; 이런 식으로

4. 끝 -_-;
 - m3counter가 예제로 들어있으니, 적당한 위치에 m3cache("m3counter"); 라고 입력해보세요.

[주의사항]
 - 3번째 인수로 2가지를 사용해야 하는 경우 그냥 두 변수를 붙여 써보세요.
    예를 들어 레벨과 성별에 따라 달라지는 화면이면...
    m3cache("example", 30, $member[mb_level].$member[mb_sex]);
 - 생성하는 파일은 /m3cache/파일이름.m3cache.php 와 같은 형태로 이름을 붙여야 합니다.
 - 2번째, 3번째 인수는 생략 가능합니다.
 - 무료 팁이지만 첨부파일의 재배포는 금합니다. 링크와 함께 퍼가는 건 환영합니다.
 - 댓글을 달거나 추천을 하면 속도가 더 빨라진다는 소문이 있습니다. ㅋ

[피드백 및 오류신고]
 - http://gnucomun.net/sp/module.176
추천
21

댓글 35개

우왓 감사합니다 !!! 초보가 약간 헷갈리기는 했는데 잘 적용했습니다. ^^

지금 인덱스 페이지의 모든 최근게시물에 적용해봤습니다.
잘 작동하네요^^ 정말 감사드려요~

늘 배추빌더의 캐시시스템이 부러웠는데 말러님에게 큰 선물을 받은 듯 싶습니다..^^
설명을 쉽게 쓰려고 해도 작문 실력이 영 아니라서...ㅜㅜ
활용하시다가 불편한 점이나 개선할 아이디어가 있으면 피드백 부탁드려요.^^
해당 스킨의 write_update.skin.php에서 처리를 해주면 되겠네요.
이건 사이트마다 모두 경우가 다르기 때문에 각자 해결하셔야 할 것 같아요.
혹시 일반화시켜서 말러캐시에 기본 기능으로 넣는 방법이 있을까요?
서버타임과 로칼타임이 틀린 분들은 시간차 만큼 +,- 해주어야 합니다.
전 서버타임과 9시간 차이나서 삽질 좀 했습니다.
캐시시점 저장은 서버타임 기준으로 되고 비교값은 로칼값으로 됩니다.

extend 폴더에 m3cache.extend.php 에서 9시간 추가해 줬습니다.
if(time() - strtotime($cache[ca_datetime])+32400 < $sec)

메인화면에 최신이미지가 30개 넘게 뜨는데.... 적용하고 엄청난 차이가...
말러님께 감사드립니다.
진짜 좋은데... 어케 말로 표현은 못하는데... "dbinstall.php를 주소창에 쳐서 1회 실행"까지는 알겠는데...
그다음부터는 도통 모르는 초보는 하염없이 슬픔이 밀려온단...ㅠㅠ;
[캐시를 할 부분의 코드를 잘라내서 /m3cache/example.m3cache.php라는 파일에 저장
 - 원하는이름.m3cache.php 라는 형태의 이름으로 저장하면 됩니다.]

example.m3cache.php 이 파일은 아무리 찾아봐도 안보이는데 어디서 찾아야 하나요?
example.m3cache.php 은 예로 만든것입니다.

캐시를 할 부분 코드를 잘라서 example.m3cache.php  로 저장하라는
그런 말씀입니다.
환이님 감사합니다.
덕분에 홈피가 로딩시간이 많이 짧아졌어요. 근데 희한하게 로그인해서 사용하면 어느 사이트 못지않게 속도가 잘나오는데, 로그아웃 한 상태에서는 특히 갤러리쪽에서는 증세가 여전히 나타나는 것은 왜그럴까요?
카운터가 고정값으로 바뀠었는데, 원상복구 하는 방법이 없을까요?
사이트에 적용해보았는데 글씨들이 모두 ???? 로 깨져 나오네요. UTF-8 용으로 제대로 넣었고 확인까지 했는데 처음엔 잘뜨고 2번째 메인 접속부터 속도는 빠른데 글씨들이 모두 ????로 깨져보이네요. 왜 그런가요 ? ㅠㅠ
저의 경우 위와 같은 기능이 필요하여, 적용해보는데,
최초 한번은 잘 나오지만, 새로고침을 한번 더 하면 한글 부분이 전부 다 ???? 로 나타나버립니다,
utf-8 환경이고, utf-8 버전을 다운 받았습니다.
최초 한번은 한글 안깨지고 잘 나옵니다.
키보드에서 F5를 쳐서 새로고침을 한번 하면 ???? 로 바뀌니 당장은 적용을 하지 못합니다.

[자문자답]
phpmyadmin 에서 살펴보았더니, m3_cache 테이블이 utf-8로 생성되지 않았다는 사실을 알게되었습니다.
latin1_swedish_ci로 만들어져 있는 것을 알게되었는데, 아마 이것이 원인듯하고, utf-8로 변환하면 해결이 될 듯합니다.

dbinstall.php를 아래와 같이 수정하였습니다.
정상적으로 실행되는 것을 확인하였습니다. 초보분들만 참고하시길...

<?
include_once("./_common.php");
sql_query("CREATE TABLE IF NOT EXISTS `m3_cache` (
  `ca_name` varchar(30) NOT NULL,
  `ca_var` varchar(255) NOT NULL,
  `ca_content` longtext NOT NULL,
  `ca_datetime` datetime NOT NULL,
  `ca_updates` int(11) NOT NULL,
  KEY `ca_name_var` (`ca_name`,`ca_var`) )
  CHARACTER SET utf8 collate  utf8_general_ci
");
echo "실행완료";
전체 29 |RSS
그누4 팁자료실 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT