태터 플러그인: 압축 전송 플러그인 by 도아
전송량 급증
태터툴즈 1.x를 설치하기 위해 호스팅 업체를 변경했다. 호스팅 업체를 변경하고 태터툴즈를 설치한 후 놀란 점은 두 가지이다. 먼저 TraceWatch 통계는 별다른 변화가 없는 데 태터툴즈 카운트는 두 배로 증가했다. 원래 하루 평균 800~900명 정도가 방문하는 것으로 되어 있는데 하루 방문자 수가 1500~1600 정도로 증가했다. 두번째로 전송량이 급증했다. 이야넷에서 웹 호스팅을 받을 때 전송량은 하루 500M였지만 단 한 번도 전송량 초과를 경험한 적이 없다. 그런데 카페24로 이주하고 태터툴즈 1.x로 판올림한 후에는 거의 80% 전송량을 사용했으며 올블로그 추천글에라도 오르면 항상 오후 6시가 조금 지나면 전송량이 초과했다.
전송량 급증
이전 글에서 설명했듯 태터툴즈 1.x를 설치하기 위해 호스팅 업체를 변경했다. 호스팅 업체를 변경하고 태터툴즈를 설치한 후 놀란 점은 두 가지이다.
- 카운터 급증
TraceWatch 통계는 별다른 변화가 없는 데 태터툴즈 카운트는 두 배로 증가했다. 원래 하루 평균 800~900명 정도가 방문하는 것으로 되어 있는데 하루 방문자 수가 1500~1600 정도로 증가했다. - 전송량 급증
이야넷에서 웹 호스팅을 받을 때 전송량은 하루 500M였지만 단 한 번도 전송량 초과를 경험한 적이 없다. 그런데 카페24로 이주하고 태터툴즈 1.x로 판올림한 후에는 거의 80% 전송량을 사용했으며 올블로그 추천글에라도 오르면 항상 오후 6시가 조금 지나면 전송량이 초과했다.
카운터가 급증한 문제는 TraceWatch를 설치했기 때문에 크게 신경 쓰지 않았다. 그러나 전송량 문제는 조금 심각했다. 카페24 상품 중 금전적인 부담이 없는 상품은 '하루 전송량 400M(64bit광 절약형, 월 500원)'짜리와 '하루 전송량 500M(64bit광 일반형, 월 1100원)'짜리였는데 500M로 전송량을 늘린다고 해도 전송량 부족이라는 문제는 해결하기에는 전송량이 턱없이 부족했기 때문이다. 그렇다고 '1G(64bit광비지니스, 월 5500원)'짜리를 신청하자니 간단한 블로그 호스팅에 너무 큰 비용이 들이는 것 같았다.
압축 전송 플러그인
결국, 이 문제를 해결하기 위해 페이지를 압축해서 전송하는 이 플러그인을 만들었다. 이 플러그인은 QAOS.com에서 전송량을 줄이기 위해 몇 년 전부터 사용한 방법으로 태터툴즈에서는 플러그인 형태로만 변경한 것이다. 다만, 태터툴즈에서 적당한 이벤트를 제공하지 않기 때문에 이 플러그인을 적용하기 위해서는 상당히 많은 파일을 변경해야 한다. 따라서 이 플러그인을 설치하고 문제가 발생한 경우 스스로 해결할 수 없는 사람은 이 플러그인을 설치하지 말기 바란다.
참고로 이 플러그인을 사용하기 전에는 거의 매일 전송량 초과 메시지(태터툴즈 카운터를 기준으로 하면 1800명 정도 방문하면)가 나타났지만 이 플러그인을 사용한 후부터는 평상시에는 30% 전송량(1800명 기준)을 사용하며, 플러그인 발표나 올블로그 알찬글에 오르는 날도 전송량이 80%를 초과하는 경우는 없었다.
블로그에 따라 다르겠지만 나처럼 글을 주로 쓰며 가끔 그림이 삽입되는 블로그는 약 4분 1 정도로 전송량을 줄일 수 있다. 실제 플러그인 설정을 항상 GZip으로 압축해서 전송하도록 설정한 후 다운로드 가속기로 파일을 내려받아 보면 GZip으로 압축된 파일은 압축되지 않은 파일의 4분의 1정도가 되는 것을 알 수 있다.
그림에서 알 수 있듯이 압축된 파일 크기는 12,596 바이트이며 실제 파일 크기는 52,209 바이트인 것을 알 수 있다.
다운로드
- 내려받기: TransferGzipPlugin.zip
- 내려받기: TransferGzipPlugin0.9x.zip
사용법
- 플러그인 설치
- 플러그인을 설치하는 방법은 간단하다. 내려받은 파일을 푼 후 태터툴즈 플러그인 폴더에 폴더째 올리고 '관리 도구/환경 설정/플러그인 설정'에서 'TransferGZip'을 '미사용'에서 '사용중'으로 변경하면 된다.
- 플러그인 사용 가능성 검사
-
이 플러그인은 Zlib를 사용한다. 따라서 최소한 Zlib를 PHP 설치시 함께 설치했어야 사용 가능하다. 'Zlib'의 사용 가능 여부는 다음과 같은 방법으로 검사할 수 있다. '플러그인을 사용할 수 있다'는 메시지가 나타난다면 태터툴즈를 패치하기 바란다.
http://host.dom/태터 설치 폴더/plugins/TransferGZip/?zlibcheck 예: https://offree.net/plugins/TransferGZip/?zlibchkeck
- 플러그인 설정
-
플러그인 시작 부분에 설정할 수 있는 변수 두개가 있다. 하나는 압축 정도를 표시하는
$level
이며, 또 하나는 압축 전송의 사용 여부를 나타내는$encoding
이다.// 1~9까지 지정 가능. 9는 최대 압축 $level = 9; // 0~2까지 지정 가능. // 0: 압축하지 않음. // 1: 브라우저가 GZip 인코딩을 지원하면 GZip으로 인코딩 // 따라서 1로 설정해서 사용하면 큰 문제를 발생하지 않음 // 2: 무조건 GZip으로 인코딩. GZip 인코딩을 지원하지 못하는 브라우저는 // 파일 저장 창이 나타남. 보다 자세한 내용은 https://qaos.com/article.php?sid=1543 // 를 참고하기 바람. $encoding = 1;
위 설명에서 알 수 있듯이 보통
$encoding
을 1로 설정해서 사용하면 무난하다. 1로 설정하면 GZip 인코딩을 지원하는 브라우저는 자동으로 'GZip'으로 압축해서 전송하며, GZip 인코딩을 지원하지 못하는 브라우저(거의 없으며 대부분 브라우저 설정 문제임)는 'GZip'으로 압축하지 않고 전송하기 때문이다. 만약$encoding
를 2로 설정하고 사용하는 경우에는 반드시 공지를 확인하기 바란다. - 태터툴즈 패치 1.x
-
적당한 이벤트가 없기때문에 사용자 페이지를 만드는 모든 파일을 패치해야 한다. 일반적으로 패치는 각 파일 끝부분의
print $view;
라는 행을 다음처럼 변경하면된다.fireEvent('OBStartSession'); print $view; fireEvent('OBEndSession');
변경해야 하는 파일은 다음과 같다.
blog/item.php
는if($view!='[##_article_rep_##]') print $view;
를 fireEvent('') 함수로 감싸야 하며,keylog/index.php
파일은print $view
와print $out
을 fireEvent('') 함수로 감싸면 된다./blog/index.php print $view; /blog/item.php if(isset($_POST['partial'])){ if($view!='[##_article_rep_##]') print $view; }else { print $view; } /archive/index.php print $view; /archive/item.php print $view; /category/index.php print $view; /entry/index.php print $view; /guestbook/index.php print $view; /keylog/index.php if(strlen($suri['value'])){ print $out; }else{ print $view; } /location/index.php print $view; /notice/index.php print $view; /notice/item.php print $view; /search/index.php print $view; /tag/index.php print $view;
- 태터툴즈 패치 0.9x
-
태터툴즈 0.9x는
index.php
로 모든 페이지를 처리하기때문에 패치하기 훨씬 쉽다. 일단index.php
파일을 좋아하는 편집기로 불러온 후 다음처럼 수정하면 된다.<? include("inc_global.php"); include("inc_function.php"); include("inc_presswork.php"); include("transfergzip.php"); GZipStart(); . . . GZipEnd(); ?>
5행에
include("transfergzip.php");
와GZipStart();
문을 삽입하고,index.php
파일 마지막 행(?>가 나오기 전 행)에GZipEnd();
을 추가하면된다.
남은 이야기
마지막으로 태터&컴패니[1]에 바라는 점이 있다면 이 압축 전송 기능은 태터툴즈 자체내에 내장했으면 한다. 물론 PHP 설치 환경에따라 사용할 수도 있고 그러지 못할 경우도 있지만 기능이 있지만 사용할 수 없는 경우와 기능이 없는 경우는 조금 다르기때문이다.
- 태터&컴패니 회사 홈페이지 주소를 몰라 굵은 글씨로 처리했습니다. ↩