우분투 아파치 속도를 빠르게 mod_expires 캐시 설정

APACHE

우리가 브라우저를 통해 웹서핑을 할때 해당 문서와 그 문서를 꾸며주는 CSS, 자바스크립트, 이미지등의 데이터를 사용자의 디스크에 임시 저장하게 됩니다.

하지만 사이트를 닫게 되면 임시 저장된 이미지와 스크립트는 삭제되어 없어집니다. 물론 브라우저 설정에 따라 다르지만 보편적으로는 그렇다는 겁니다.

만일 사용자가 같은 사이트에 같은 문서를 또다시 보게되면 이미지와 관련 스크립트를 다시 서버에 요청하게 되는데요. 웹서버를 운영하게 되면 이러한 리소스까지도 트래픽에 연관이 되고 방문자가 많을수록 다시 요청하는 양이 크게 증가해서 트래픽을 유발하게 됩니다.

이러한 재요청 문제에 대해서 아파치는 mod_expires 모듈을 통해 사용자가 사이트에 접속해서 받은 스크립트, 이미지등을 사용자의 디스크에 저장한 다음(캐시) 다음에 다시 해당 웹 페이지를 요청했을때 파일이 변화하지 않았다고 서버에서 응답하면 브라우저에서 사용자의 디스크에 있는 파일을 브라우저에 출력해서 속도를 높여줍니다.

mod_expires는 앞서 얘기한것 처럼 문서, 스크립트, 이미지, 동영상, 음악등의 파일을 사용자의 브라우저 임시폴더에 저장한 다음 사용자가 요청했을때 해당 파일이 캐싱되어 있고, 요청한 파일이 변경되지 않으면 캐시된 파일을 출력하게 해주는 역할을 하고 있습니다.

앞서 포스팅한 우분투 아파치 속도를 빠르게 mod_deflate gzip 압축 (링크)와 함께 필수적으로 설정해야 할 모듈이며 이런 작은 차이 하나하나가 누적되어 웹서버의 퍼포먼스에 영향을 주게 됩니다.

mod_expires 설정

ubuntu_apache_mods_deflate_01

mod_deflate와 마찬가지로 /etc/apache2/mods-enabled 경로로 이동한 다음 ll 명령어를 통해 expires 모듈이 아파치에서 사용하고 있는지 확인합니다.

expires.conf와 expires.load 파일의 심링크가 존재하지 않는다면 현재 아파치에서는 mods_expires 가 적용되지 않았다는 것인데요.

<IfModule mod_expires.c>
ExpiresActive On

ExpiresByType text/plain "modification plus 1 month"
ExpiresByType text/html "modification plus 1 month"
ExpiresByType text/xml "modification plus 1 month"

ExpiresByType text/javascript "access plus 1 month"
ExpiresByType text/x-javascript "access plus 1 month"
ExpiresByType text/css "access plus 1 month"

ExpiresByType application/javascript "access plus 1 month"
ExpiresByType application/x-javascript "access plus 1 month"

ExpiresByType image/bmp "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/tiff "access plus 1 month"
ExpiresByType image/x-icon "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/mpeg "access plus 1 month"
ExpiresByType audio/x-aiff "access plus 1 month"
ExpiresByType audio/x-mpegurl "access plus 1 month"
ExpiresByType audio/x-wav  "access plus 1 month"
ExpiresByType audio/mid  "access plus 1 month"

</IfModule>

/etc/apache2/mods-available/expires.conf 파일을 편집기로 열어 해당 옵션이 잘 설정되어 있는지 확인합니다. 별도의 설정 없이 기본값으로도 대부분의 문서, 이미지, 스크립트가 정의되어 있습니다.

ln -s /etc/apache2/mods-available/expires.load /etc/apache2/mods-enable/expires.load
ln -s /etc/apache2/mods-available/expires.conf /etc/apache2/mods-enable/expires.conf

설정 파일을 확인한 다음 아파치가 사용할수 있게 mod_expires 관련파일 두개를 심링크 걸어주고 아파치를 재시작하면 설정은 끝납니다.

apache2_mod_expires_01

브라우저의 개발자 도구로 이미지를 다시 불러오면 코드 304 Not modified로 이미지를 웹서버에서 다운로드 받지 않고 브라우저의 캐시에서 재활용 되는것을 확인할수 있습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Fill out this field
Fill out this field
유효한 이메일 주소를 입력해주세요.

apache2 logo
우분투 아파치 속도를 빠르게 mod_deflate gzip 압축
아파치 웹서버 데몬은 gzip을 이용해 문서를 압축하고 클라이언트에게 전송하는 것을 지원합니다. 압축되는 문서는 html,CSS,javascript등 웹사이트를 구성하는 대부분의 문서로 문서 하나로 비교하면…