php, css, js 파일 압축해서 보내기 (htaccess 이용)

웹사이트의 트래픽을 줄이기 위해서 전송할 문서를 압축해서 보내는 방법이다.

php, css, js 파일만 압축해서 보내는 것을 예제로 첨부한다.
이미지파일은 이미 이미지 자체가 압축되어 있기 때문에 한번더 압축해봐야 오히려 용량이 늘어 날수 있기 때문에 사용하지 않는다.

참고로 해당 기능을 사용하기 위해서는 아파치에서 mod_gzip 사용이 가능해야 한다.

PHP 압축은
다음과 같은 PHP 파일을 만들어 주고

<?php
ob_start("ob_gzhandler");
?>

.htaccess 파일에는 아래와 같이 추가 해준다.

# Gzip 압축 사용하기
<FilesMatch "\.(txt|html|htm|php)">
	#ForceType application/x-httpd-php
	#php_value auto_prepend_file /home/munilive/blog/gzip_php.php
</FilesMatch>

JS 압축은
다음과 같은 PHP 파일을 만들어 주고

<?php
ob_start ("ob_gzhandler");

header ("content-type: text/javascript; charset: UTF-8");

header ("cache-control: must-revalidate");
$offset = 60 * 60 * 60 * 7;
$expire = "expires: " . gmdate ("D, d M Y H:i:s", time() + $offset) . " GMT";
header ($expire);
?>

.htaccess 파일에는 아래와 같이 추가 해준다.

<FilesMatch "\.(js)">
	#ForceType application/x-httpd-php
	#php_value auto_prepend_file /home/munilive/blog/gzip_javascript.php
</FilesMatch>

마지막으로 CSS 압축은
다음과 같은 PHP 파일을 만들어 주고

<?php
ob_start ("ob_gzhandler");

header ("content-type: text/css; charset: UTF-8");

header ("cache-control: must-revalidate");
$offset = 60 * 60 * 60 * 7;
$expire = "expires: " . gmdate ("D, d M Y H:i:s", time() + $offset) . " GMT";
header ($expire);
?>

.htaccess 파일에는 아래와 같이 추가 해준다.

<FilesMatch "\.(css)">
	#ForceType application/x-httpd-php
	#php_value auto_prepend_file /home/munilive/blog/gzip_css.php
</FilesMatch>

참고로 .htaccess 파일에 적용하는 경로는 절대경로로 지정해야 한다.

적용하고 제대로 작동되는지 알아보려면 아래 사이트에 접속하여 확인한다.
http://www.whatsmyip.org/http-compression-test/

또는 http://redbot.org/ 로 접속해서 해더에서 Content-Encoding: gzip 을 포함하고 있다면 성공.

http://www.treasurej.com/120874 를 참고 하였다. (참고라기 보단 거의 배끼기 수준)

현재 해당 블로그는 적용을 하고 있지 않다.
적용을 하였더니 워드프레스의 글쓰기 화면에서 CSS 적용이 전혀되지 않고 에러나 나고 있다. 자바스크립트도 마찬가지의 문제. 그래서 현재 설정을 꺼둔 상태이다.

이외 mod_deflate를 이용하는 방법이 있는대 현재 내서버에서는 mod_deflate 를 이용해서 gzip 압축을 하고 있다.

자세한 내용은 http://pat.im/863 사이트를 PHPSCHOOL에 카르마님의 글을 참고하기 바란다.

CC BY-NC-SA 4.0 This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.