본문 바로가기

Server Story..../apache

apache 이미지 캐쉬 mod_expires 설정

===============================  설정 사례 ======================================
httpd.conf

<IfModule mod_expires.c>

<Directory "/home/tbo/game/de1/image">
        ExpiresActive On
ExpiresDefault "access plus 1 month"
        ExpiresByType /home/tbo/game/de1/image/png "access plus 1 month" 
        ExpiresByType /home/tbo/game/de1/image/gif "access plus 1 month"
        ExpiresByType /home/tbo/game/de1/image/jpg "access plus 1 month"

</Directory>

<Directory "/home/tbo/game/en1/image">

        ExpiresActive On
ExpiresDefault "access plus 1 month"
        ExpiresByType /home/tbo/game/en1/image/png "access plus 1 month"
        ExpiresByType /home/tbo/game/en1/image/gif "access plus 1 month"
        ExpiresByType /home/tbo/game/en1/image/jpg "access plus 1 month"

</Directory>

#       ExpiresDefault "access plus 1 month"
#       ExpiresDefault /home/tbo/game/en1/image/ "access plus 1 month"


</IfModule>

========================================================================================

우분투 활성화 

sudo a2enmod expires

===========================================================================================
apache에서는 mod_expires 모듈을 통해 Expires HTTP header 를 설정할 수 있다.
이를 통하여 클라이언트(웹페이지 방문자)에 캐싱되는 문서나 이미지들이 많아서 트래픽을
감소시킬 수 있다. 이미지 전용 서버나 이미지 디렉토리에 설정을 해두면 효과적이다.

이미지 서버에 지정한 다음 예를 보자.

 
<IfModule mod_expires.c>
        ExpiresActive On
        ExpiresDefault "access plus 1 month"

   # 제외할 디렉토리
        <Directory "/usr/local/apache/htdocs/temp">
        ExpiresActive Off
        </Directory>
</IfModule>

 


- ExpiresActive On 지시자로 Expires 설정을 enable 한다.
- ExpiresDefault "access plus 1 month" 지시자는 액세스한지 얼마나 지나서 expire할 것인지를 지정한다.
  즉, 지정한 기간만큼 클라이언트에 캐싱이 된다. 위에는 1달이다.

이외에 클라이언트에서 액세스한지 1달, 4주, 30일, 1년 등과 같은 expire 주기와
서버의 파일의 수정 시간으로 expire 주기를 설정할 수 있다.

 
ExpiresDefault "access plus 1 month"
ExpiresDefault "access plus 4 weeks"
ExpiresDefault "access plus 30 days"
ExpiresDefault "access plus 1 years"
ExpiresDefault "modification plus 30 days"
 


- 설정 마지막부분에 Directory 지시자와 ExpiresActive Off 설정을 통해
  특정 디렉토리만 expire 설정에서 제외할 수 있다.
  반대로 특정 디렉토리만 On으로도 설정할 수 있다. (일반 웹서버에 /images 와 같이 디렉토리가 있는 경우)

 
ExpiresByType image/jpeg "acces plus 4 weeks"
ExpiresByType image/gif  "acces plus 4 weeks"
 


- 위처럼 파일의 유형(image/jpeg, image/gif은 이미지 파일)으로도 가능하다.

아주 간단하지 않는가?

참고로 [다음(daum)] 의 이미지 서버는 28일(4주)로 [야후!코리아] 는 5년으로 설정되어 있다.


총정리

<IfModule mod_expires.c> 
ExpiresActive On 
ExpiresByType application/javascript "access plus 1 month" 
ExpiresByType text/css "access plus 1 month" 

ExpiresByType image/bmp "access plus 1 month" 
ExpiresByType image/cgm "access plus 1 month" 
ExpiresByType image/gif "access plus 1 month" 
ExpiresByType image/jpeg "access plus 1 month" 
ExpiresByType image/png "access plus 1 month" 
ExpiresByType image/jpeg "access plus 1 month" 
ExpiresByType image/tiff "access plus 1 month" 

ExpiresByType video/mpeg "access plus 1 month" 
ExpiresByType video/quicktime "access plus 1 month" 
ExpiresByType video/x-msvideo "access plus 1 month" 

ExpiresByType audio/basic "access plus 1 month" 
ExpiresByType audio/midi "access plus 1 month" 
ExpiresByType audio/mpeg "access plus 1 month" 
ExpiresByType audio/x-aiff "access plus 1 month" 
ExpiresByType audio/x-mpegurl "access plus 1 month" 
ExpiresByType audio/x-pn-realaudio "access plus 1 month" 
ExpiresByType audio/x-wav  "access plus 1 month" 

ExpiresByType application/x-shockwave-flash  "access plus 1 month" 
</IfModule>

===========================================================================

자세한자료