웹마짱구's 블로그

Apache Module mod_expires

Linux/Apache : 2009/07/09 15:18


Module mod_expires


이 모듈은 mod_expire.c 화일안에 들어있다. 이 모듈의 주된 기능은 클라이언트와의 문서에 대한 신뢰를 지속시키는데 있다.우리들이 사용하는 브라우저(넷스케이프, 익스플로러 등등)는 북마크 기능을 가지고 있다. 디스크 상에 캐시영역을 확보하여 자주가는 사이트에 접속할때 캐시영역에 보관되어 있지 않은 사이트에 접속할때보다 더빨리 문서를 보여주게 되는데 이것은 브라우저가 이미 캐시영역에 사이트의 문서들을 저장한 상태에서 최종수정일자가 변경된 문서만을 요청해 브라우징해주기 때문이다.

웹 서버에서는 빠른 정보제공과 실행의 과부하를 덜수 있는 수단으로서 이 기능들을 지원해야 한다. 이 모듈은 바로 위의 기능을 지원하는 것과 관계되어 있다.

서문

이 모듈은 클라이언트 요청에 따라 전송되는 서버응답 헤더의 정보를 설정한다. 자세히 말하자면 특정 MIME TYPE 문서 전송시 서버응답 헤더내에 전송되는 문서의 만료일자를 설정한다. 만료일자란, 클라이언트 브라우저 프로그램이 같은 웹사이트에 재접속했을 때 이미 캐시에 해당 사이트의 웹 문서가 저장되어 있다면, 수정된 문서만을 받으려고 할것이다. 이때, 클라이언트의 브라우저는 웹서버에게 특정 MIME-TYPE과 해당 MIME의 만료일자를 보내면서 만료일자가 경과된 문서만을 재전송해달라고 웹서버에게 요청하게 된다.

웹서버는 클라이언트의 요청헤더속에 포함된 MIME-TYPE 과 만료일자를 분석하고 해당 MIME-TYPE문서가 현재일자보다 기간이 경과되었을때는 재전송하게 되는 것이다. 이때, 클라이언트가 웹서버에게 보내는 만료일자는 웹서버가 자신의 설정화일을 참조로 클라이언트에게 전송했던 것이다.

바로 이 만료일자의 설정과 관계되는 것을 정의하는 모듈이 이 mod_expires이다.
설정과 관계되는 다이렉티브는 다음과 같은 3가지가 있다.

Directives

  • ExpiresActive
  • ExpiresByType
  • ExpiresDefault

  • ExpiresActive directive

    Syntax: ExpiresActive boolean
    Context: server config, virtual host, directory, .htaccess
    Override: Indexes
    Status: Extension
    Module: mod_expires

    이 다이렉티브는 ExpiresByType,ExpiresDefault의 설정을 On,Off한다. On으로 설정되면 ExpiresBytype또는 ExpiresDefault의 설정값을 따른다.

    Off로 설정되면 물론 설정된 값을 참조하지 않는다.


    ExpiresByType directive

    Syntax: ExpiresByType mime-type <code>seconds
    Context: server config, virtual host, directory, .htaccess
    Override: Indexes
    Status: Extension
    Module: mod_expires

    이 다이렉티브는 만료일자를 설정하는 것으로서, 클라이언트 브라우저가 문서의 전송요구시 이미 캐시에 저장되어 있는 문서와 비교하기 위해서는 특별히 사용법은 ExpiresByType MIME-type <타입종류>시간(초단위) 으로 설정한다. 위의 인자중 초(sec)는 기본시간에 덧붙여 추가될 시간으로서 기본시간+초 = 만료일자 로 계산할수 있다.
    기본시간은 화일의 생성시간 또는 현재의 시간등으로 ExpiresByType정의시 생성방법을 정의한다. 타입종류는 초바로 앞에 붙는 알파벳으로서 M과 A 두가지가 있다. M은 전송될 파일의 최종 수정시간을 기초로 만료일자를 정하는 방식이며, 자주 수정되는 문서를 같은 URL로부터의 요청을 반복적으로 받을때 아주 효과적으로 기능을 발휘한다. 특히 Html태그를 포함한 문서의 전송에 많이 쓰인다.

    A는 클라이언트의 최종 요청시간을 기초로 만들어진 만료일자를 의미하며, 그림파일과 같이 거의 수정되지 않는 문서전송시 유리하다.

    예제:


       ExpiresActive On                   # 설정값 참조 ON
       ExpiresByType image/gif A2592000  #  MIME-TYPE: image/gif 문서에 대해 클라이언트의 요청시간을 기초로 한달후로 만료일자 생성
       ExpiresByType text/html M604800   # HTML 문서에 아주 좋은 방법으로 주단위 수정을 의미한다. 한 주가 지나면 웹서버는 해당클라이언트에 수정된 문서를 전송해야 할것이다.

    ExpiresDefault directive

    Syntax: ExpiresDefault <code>seconds
    Context: server config, virtual host, directory, .htaccess
    Override: Indexes
    Status: Extension
    Module: mod_expires

    이 디렉티브는 ExpiresByType에 의해 정의되지 않은 나머지 모든 MIME-TYPE의 만료날자를 설정한다.


    ExpiresDefault 와 ExpiresByType의 또다른 설정법

     
    ExpiresDefault "<base> [plus] {<num> <type>}*"
    ExpiresByType type/encoding "<base> [plus] {<num> <type>}*"
     
     
    <base>
    기본시간의 생성방벙을 결정하며 다음과 같은 값을 사용할 수 있다.
  • access : 문서가 요청되어 전송되는 시간을 기본시간으로 계산한다.,
  • now : 기본적으로 access와 같으며 요청되어 전송되는 시간을 기보시간으로 계산한다.
  • modification :화일의 수정된 시간을 기초로 기본시간을 산출한다.
  • [plus[ 키워드는 num인자와 type인자를 추가로 요구한다.
  • 더해지는 시간의 단위를 결정하는 type의 종류는 다음과 같으며 num인자는 정수형 수치이다.
  • years
  • months
  • weeks
  • days
  • hours
  • minutes
  • seconds
  • 다음과 같은 예제가 있다.

    ExpiresDefault "access plus 1 month"
    디폴트 만료일자 생성방법으로 현재시간에 1달을 더한 시간을 만료시간으로 한다.
    ExpiresDefault "access plus 4 weeks"
    디폴트 만료일자 생성방법으로 현재시간에 4주를 더한 시간을 만료시간으로 한다.
    ExpiresDefault "access plus 30 days"

    한가지 흥미있는 것으로는 인자중 <num>과 <tyoe>를 여러개 사용하여 세부적인 설정을 할 수 있다.

    ExpiresByType text/html "access plus 1 month 15 days 2 hours"
    html 파일전송시 현재시간에 1달 15일 2시간을 더한시간을 만료시간으로 계산한다.
    ExpiresByType image/gif "modification plus 5 hours 3 minutes"
    이미지 화일인 gif화일 전송시 파일수정일자에 5시간 3분을 더하여 만료시간을 계산한다.
    top

    Linux/Apache : 2009/07/09 15:18 Trackback. : Comment. : view 628

    Trackback Address :: http://jjangu.pe.kr/blog/trackback/574

    Write a comment.




    : 1 : ... 32 : 33 : 34 : 35 : 36 : 37 : 38 : 39 : 40 : ... 543 :