Problem

.htaccess를 이용하면 디렉터리 레벨에서 아파치 파일이나 설정을 재정의 할 수 있게 설정할 수 있다. 기본적으로는 httpd.conf에서 AllowOverride 지시자를 통해서 어떤 기능을 사용할 수 있게 할지 설정 할 수 있는데, 단독 서버나 가상 서버가 아닌 호스팅 환경에서 서버 전역 설정을 수정할 수 없는 상황이라면 아래와 같이 디렉터리 별 .htaccess를 이용해 콘텐츠의 캐시 헤더와 압축 설정으로 성능을 향상 시킬 수 있다.

Solution

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresDefault "access plus 1 seconds"
    ExpiresByType text/html "access plus 1 seconds"
    ExpiresByType image/x-icon "access plus 2592000 seconds"
    ExpiresByType image/gif "access plus 2592000 seconds"
    ExpiresByType image/jpeg "access plus 2592000 seconds"
    ExpiresByType image/png "access plus 2592000 seconds"
    ExpiresByType text/css "access plus 604800 seconds"
    ExpiresByType text/javascript "access plus 86400 seconds"
    ExpiresByType application/javascript "access plus 86400 seconds"
    ExpiresByType application/x-javascript "access plus 86400 seconds"
</IfModule>

<ifModule mod_gzip.c>
    mod_gzip_on Yes
    mod_gzip_dechunk Yes
    mod_gzip_item_include file .(html?|txt|css|js|php|pl)$
    mod_gzip_item_include handler ^cgi-script$
    mod_gzip_item_include mime ^text/.*
    mod_gzip_item_include mime ^application/x-javascript.*
    mod_gzip_item_exclude mime ^image/.*
    mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>

<ifmodule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x- javascript application/javascript
</ifmodule>