전송량 급증

태터툴즈 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 바이트인 것을 알 수 있다.

다운로드

사용법

플러그인 설치
플러그인을 설치하는 방법은 간단하다. 내려받은 파일을 푼 후 태터툴즈 플러그인 폴더에 폴더째 올리고 '관리 도구/환경 설정/플러그인 설정'에서 '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.phpif($view!='[##_article_rep_##]') print $view;를 fireEvent('') 함수로 감싸야 하며, keylog/index.php 파일은 print $viewprint $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 설치 환경에따라 사용할 수도 있고 그러지 못할 경우도 있지만 기능이 있지만 사용할 수 없는 경우와 기능이 없는 경우는 조금 다르기때문이다.

관련 글타래


  1. 태터&컴패니 회사 홈페이지 주소를 몰라 굵은 글씨로 처리했습니다.