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

munilive
munilive

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

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

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

작동되는 방식은 서버에 CSS, JS파일에 대한 요청이 들어오면 .htaccess 파일을 통해 미리 지정된 PHP 파일을 통해 압축 후 전송하도록 하는 방식으로 이 방식을 사용할 경우 요청 시 마다 압축을 해서 보내야 하므로 많은 요청에서는 매우 비효율적으로 작동 할 수 있다.

PHP 압축

  1. gzip_php.php 파일 생성

    <?php
    ob_start("ob_gzhandler");
    ?>
  2. .htaccess 파일에 내용 추가

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

JS 압축

  1. gzip_javascript.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);
    ?>
  2. .htaccess 파일에 내용 추가

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

CSS 압축

  1. gzip_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);
    ?>
  2. .htaccess 파일에 내용 추가

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

참고로 .htaccess파일에 적용하는 경로는 절대 경로를 지정해야 한다.
적용하고 제대로 작동하는지 확인하려면, 아래 사이트에 접속해 본다.
https://www.whatsmyip.org/http-compression-test/ 또는 https://redbot.org/ 로 접속해서 헤더에 Content-Encoding: gzip을 포함하고 있는지 확인한다.

참고 사이트

munilive

munilive

Backend Application Developer

Share

Comments

Related Posts

.htaccess Rewriterule 사용하는법

.htaccess Rewriterule 사용하는법

Apache의 Rewrite Module 사용을 위한 설정 방법 및 모듈의 지시자 및 사용 방법 등에 대해 설명을 한다.

munilive munilive ·
지정아이피의 접속을 제외한 모든 접속을 특정페이지로 보내기

지정아이피의 접속을 제외한 모든 접속을 특정페이지로 보내기

.htaccess 설정으로 특정 IP의 접속을 제외한 모든 접속을 redirect 시키는 방법에 대한 글이다.

munilive munilive ·
.htaccess 이용하여 타서버에서 이미지 링크 막기 (이미지 무단링크 방지)

.htaccess 이용하여 타서버에서 이미지 링크 막기 (이미지 무단링크 방지)

apache의 .htaccess 파일 설정을 통해 내 도메인 외 다른 도메인에서의 접근을 제한하는 방법에 대한 설명 글이다.

munilive munilive ·