차림

2008년 11월 25일

테크노트 압축 전송하기

누리집을 운영하면서 방문객이 늘어나면 좋지만 호스팅 서비스를 이용할 경우 전송량 (트래픽)에 신경쓰지 않을 수가 없다. 물론 호스팅 서비스 사양을 높이면 되지만 그럴려면 돈이 들고, 방문객은 점차 줄어들 수도 있기 때문에 무작정 사양을 올리기가 꺼려진다. 게다가 하루 방문객이 어느 이상 늘어나게 되면 더 이상은 호스팅 서비스로 견디기 힘들다. 그래서 일단은 추가 비용 없이 늘어난 방문객을 소화할 수 있는 방법이 필요한데, 정해진 하루 트래픽을 늘리지 않는다면 선택은 하나, 압축 전송으로 전송량을 줄이는 것이다.

서버를 스스로 관리할 수 있다면 간단하게 압축 전송을 제어할 수 있지만, 호스팅 서비스를 이용할 경우 그럴 수는 없다. 하지만 방법이 없는 건 아니었다. 호스팅 서비스를 쓰면서도 압축 전송할 수 있었다.

내가 쓰는 php 게시판은 테크노트니까 여기선 호스팅 사이트에서 gzip 압축 사용하기를 참고해 테크노트에서 압축 전송하는 방법을 소개한다. 정작 프로그램 소스는 알아도 테크노트 어디에 적용해야 하는지 몰라 쩔쩔매는 사람이 있을 테니까.

선제 조건

HTTP/1.1 일 것. 하지만 대개 호스팅 서비스는 이걸 만족할 듯.

gzip.php 압축 라이브러리 파일 만들기

파일 편집기를 열어 gzip.php 파일을 새로 만든다. 파일 이름은 다르게 해도 상관없다.

위 연결한 글에서 ‘메인 라이브러리 파일(예: main.php)에 등록하라’고 되어 있는 함수를 모두 복사해 넣는다. 1번 귤색 상자 안에 들어있는 걸 모두 복사해 넣으면 된다.


gzip.php 파일

<?php
.......... 이 부분에 복사해 넣으면 됨 .........
?>

이때 주의할 점은 파일 맨 앞에는 <?php 또는 <?이 오고 맨 뒤에는 ?> 와야 한다는 것이다. 그렇지 않으면 php 구문이라는 걸 이해하지 못해 파일이 제대로 돌아가지 않는다.

board.php 파일 손보기

아마 대개는 이 부분을 몰라 헤맬 텐데, 테크노트에서 동적 파일 생성하는 건 게시판을 만들어 보여주는 파일, 즉 board.php이다.

테크노트를 설치한 최상위 폴더에서 board.php 파일을 열고, 위 연결한 글에서 2번 귤색 상자에 들어있는 코드 2개를 각각 파일의 맨 위와 맨 아래에 넣어준다.


board.php 파일

<?php
include("gzip.php");
ob_start(); // 반드시 문서를 출력하기 전에 기동해야함
ob_implicit_flush(0); 
?>

(원래 board.php 파일 소스 부분)

<?php
GzDocOut(); // 실시간 압축 함수 호출
ob_end_flush(); 
?>

단, 이때 주의할 점은 맨 위에 넣는 코드에서 include하는 파일 이름을 아까 만든 파일 이름 (gzip.php)으로 해야 한다는 것이다. 위에 연결한 글에서는 압축 라이브러리 파일 이름의 예로 main.php를 들었기 때문에 include하는 파일 이름이 main.php지만, 여기선 라이브러리 함수 파일 이름을 gzip.php로 했기 때문에 include하는 파일 이름을 gzip.php로 해야 한다. 물론 라이브러리 파일 이름을 다르게 했다면 그에 맞게 바꿔줘야겠지.

이제 새로 만든 gzip.php 파일과 코드를 추가한 board.php 파일을 웹에 올리면 된다. 두 파일을 같은 폴더 (테크노트 최상위 폴더)에 넣어야 한다. 그리고 게시판이 제대로 돌아가는지 확인하면 끝.

만약 관리자 메뉴에도 자주 드나드는 편이라면 board.php 파일에 한 것처럼 admin.php 파일에도 똑같은 식으로 코드를 넣어주면 된다.

며칠 동안 전송량을 조사해 보니 이 방법으로 테크노트 게시판 전송량이 약 50% 줄어든 걸 확인할 수 있었다. 물론 이 방법으로는 테크노트 게시판, 즉 board.php?board=boardname... 어쩌고 하면서 출력되는 것만 압축 전송될 뿐 다른 자바스크립트 파일 같은 건 압축 전송되지 않는다.

덤으로 테크노트 게시판 전송량을 줄이는 방법으로는 이렇게 압축 전송하는 방법 말고도 애초에 파일 크기를 줄이는 방법도 있다. 그러니까 테크노트의 기본 스킨을 그대로 쓰는 대신 (테크노트 기본 스킨은 트래픽 면에서는 그다지 유용하지 않다), 전체 html 소스를 간단하게 하고 css 파일을 잘 이용해서 스킨을 새로 만들어 쓰는 것이다. 본문 내용이야 어쩔 수 없지만 본문을 담는 틀 자체는 간단하고 작게 만들 수 있고, 실제로도 트래픽이 꽤나 줄어든다. 하지만 이건 html 언어와 css와 그밖의 여러가지를 모르면 할 수 없는, 좀 어려운 일이다. 나야 이미 써먹고 있지만. 트래픽이 뭔지.

문제점 발견 (2009년 1월 14일 추가)

위 설명대로 하면 첨부 파일 내려받기가 안 된다. 그러니까 board.php 파일 맨 위에 다른 코드를 넣거나 빈 줄을 만들어서 원래 맨 위에 있던 소스가 아래로 밀리게 되면 첨부 파일 내려받기가 안 된다.

위와 같이 할 경우 첨부 파일 내려받기가 안 되는 거 빼고는 아직 다른 문제점은 발견하지 못했으므로, 테크노트를 쓸 때 파일을 첨부하지 않는다면 문제가 없을 것 같기도 하다.

목록