말러캐시 0.90 - 그누보드 속도를 올리는 cache 시스템 정보
말러캐시 0.90 - 그누보드 속도를 올리는 cache 시스템첨부파일
본문
[모듈소개]
페이지에서 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
페이지에서 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
21
댓글 35개
우왓 감사합니다 !!! 초보가 약간 헷갈리기는 했는데 잘 적용했습니다. ^^
지금 인덱스 페이지의 모든 최근게시물에 적용해봤습니다.
잘 작동하네요^^ 정말 감사드려요~
늘 배추빌더의 캐시시스템이 부러웠는데 말러님에게 큰 선물을 받은 듯 싶습니다..^^
지금 인덱스 페이지의 모든 최근게시물에 적용해봤습니다.
잘 작동하네요^^ 정말 감사드려요~
늘 배추빌더의 캐시시스템이 부러웠는데 말러님에게 큰 선물을 받은 듯 싶습니다..^^
설명을 쉽게 쓰려고 해도 작문 실력이 영 아니라서...ㅜㅜ
활용하시다가 불편한 점이나 개선할 아이디어가 있으면 피드백 부탁드려요.^^
활용하시다가 불편한 점이나 개선할 아이디어가 있으면 피드백 부탁드려요.^^
글쓰기 완료시 캐싱된 파일을 재생성 해주면 좋겠어요!
해당 스킨의 write_update.skin.php에서 처리를 해주면 되겠네요.
이건 사이트마다 모두 경우가 다르기 때문에 각자 해결하셔야 할 것 같아요.
혹시 일반화시켜서 말러캐시에 기본 기능으로 넣는 방법이 있을까요?
이건 사이트마다 모두 경우가 다르기 때문에 각자 해결하셔야 할 것 같아요.
혹시 일반화시켜서 말러캐시에 기본 기능으로 넣는 방법이 있을까요?
접목해 봤는데 메인이 눈에 띄게 빨라졌습니다.
이게 메인에 딱이더라고요!
잡지사 사이트 적용시켰습니다. 아~아아아아!!! 쾌적하당!!!ㅎㅎㅎㅎ
감사합니다.
감사합니다.
효과를 보셨다니 다행이네요.^^
메인에 최신글 게시판만 20개 불러오는 사이트 있는데 속도 겁나게 빨라졌습니다. )0..0(
20개 정도면 확실히 효과가 있으셨겠네요!
짱짱!!!! 짱짱 ~~~!!! 캐쉬타임 몇으로해야 가장 최적화 될까요?
오. 좋네요
감사합니다.
서버타임과 로칼타임이 틀린 분들은 시간차 만큼 +,- 해주어야 합니다.
전 서버타임과 9시간 차이나서 삽질 좀 했습니다.
캐시시점 저장은 서버타임 기준으로 되고 비교값은 로칼값으로 됩니다.
extend 폴더에 m3cache.extend.php 에서 9시간 추가해 줬습니다.
if(time() - strtotime($cache[ca_datetime])+32400 < $sec)
메인화면에 최신이미지가 30개 넘게 뜨는데.... 적용하고 엄청난 차이가...
말러님께 감사드립니다.
전 서버타임과 9시간 차이나서 삽질 좀 했습니다.
캐시시점 저장은 서버타임 기준으로 되고 비교값은 로칼값으로 됩니다.
extend 폴더에 m3cache.extend.php 에서 9시간 추가해 줬습니다.
if(time() - strtotime($cache[ca_datetime])+32400 < $sec)
메인화면에 최신이미지가 30개 넘게 뜨는데.... 적용하고 엄청난 차이가...
말러님께 감사드립니다.
속도가 무지 빨라졌어요 ㅠㅠ
정말 빠르네요T_T;;;;;;;말러님 감사합니다T_T
감사합니다~~^^
진짜 좋은데... 어케 말로 표현은 못하는데... "dbinstall.php를 주소창에 쳐서 1회 실행"까지는 알겠는데...
그다음부터는 도통 모르는 초보는 하염없이 슬픔이 밀려온단...ㅠㅠ;
그다음부터는 도통 모르는 초보는 하염없이 슬픔이 밀려온단...ㅠㅠ;
정말 좋아요 너무빨라졌어요 꾸벅~쵝옥
[캐시를 할 부분의 코드를 잘라내서 /m3cache/example.m3cache.php라는 파일에 저장
- 원하는이름.m3cache.php 라는 형태의 이름으로 저장하면 됩니다.]
example.m3cache.php 이 파일은 아무리 찾아봐도 안보이는데 어디서 찾아야 하나요?
- 원하는이름.m3cache.php 라는 형태의 이름으로 저장하면 됩니다.]
example.m3cache.php 이 파일은 아무리 찾아봐도 안보이는데 어디서 찾아야 하나요?
example.m3cache.php 은 예로 만든것입니다.
캐시를 할 부분 코드를 잘라서 example.m3cache.php 로 저장하라는
그런 말씀입니다.
캐시를 할 부분 코드를 잘라서 example.m3cache.php 로 저장하라는
그런 말씀입니다.
환이님 감사합니다.
덕분에 홈피가 로딩시간이 많이 짧아졌어요. 근데 희한하게 로그인해서 사용하면 어느 사이트 못지않게 속도가 잘나오는데, 로그아웃 한 상태에서는 특히 갤러리쪽에서는 증세가 여전히 나타나는 것은 왜그럴까요?
카운터가 고정값으로 바뀠었는데, 원상복구 하는 방법이 없을까요?
덕분에 홈피가 로딩시간이 많이 짧아졌어요. 근데 희한하게 로그인해서 사용하면 어느 사이트 못지않게 속도가 잘나오는데, 로그아웃 한 상태에서는 특히 갤러리쪽에서는 증세가 여전히 나타나는 것은 왜그럴까요?
카운터가 고정값으로 바뀠었는데, 원상복구 하는 방법이 없을까요?
게시판 스킨 바꿔보세요^^ㅋ 아는게있어야 가르쳐드리져 ㅋㅋ
멋지네요.. 감사합니다.
쩝...먼 내용인지...소스를 어케잘라오란말씀이신지...
테스트문건이라도 살짝 뿌려넣지그래여...
테스트문건이라도 살짝 뿌려넣지그래여...
ㄳㄳ
오~ 한번 사용해 봐야 겠네요.^^b
사이트에 적용해보았는데 글씨들이 모두 ???? 로 깨져 나오네요. 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 "실행완료";
최초 한번은 잘 나오지만, 새로고침을 한번 더 하면 한글 부분이 전부 다 ???? 로 나타나버립니다,
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 "실행완료";
MySQL 환경설정에서 기본값을 utf-8로 설정 안하셨나보군요 ^^
아~좋은팁이네요.. 바로 적용해 봐야겟네요
참 좋은 기능입니다. 걍 캐시 검색해서 들어왔는데요.. 그누는 참 좋은 사람들의 모임인 것 같습니다.
메인도 적용 했는데 좋으네요.^^