반응형
아파치 웹 서버에 정적 리소스에 대해 캐시 설정하여, 설정된 기간 동안 로컬 PC에 저장된 리소스를 사용하여 성능을 올리는 방법입니다.
캐시 주기 설정 값인 Cache-Control
과 max-age
값을 조절하는 mod_expires
모듈을 http.conf에서 사용 처리합니다
# mod_expires 모듈 주석 해제
LoadModule expires_module modules/mod_expires.so
웹 서비스에 공통으로 설정할 경우 http.conf 파일에 내용 추가
# 캐시 설정 Type 정의
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/gif "access plus 1 days"
ExpiresByType image/png "access plus 1 days"
ExpiresByType image/jpeg "access plus 1 days"
ExpiresByType text/css "access plus 1 days"
ExpiresByType application/javascript "access plus 1 days"
ExpiresByType application/x-shockwave-flash "access plus 1 days"
# Cache-Control: no-cache, no-store, max-age=0
# Pragma: no-cache 가 설정된 경우 제외 작업
Header unset Cache-Control
Header set Pragma "none"
</IfModule>
특정 웹 서비스를 위해 vhost.conf 설정할 경우
<VirtualHost *:80>
ServerAdmin admin@nakanara.com
DocumentRoot "/usr/local/apache2/htdocs"
ServerName nakanara.com
ServerAlias nakanara.com
ErrorLog "|bin/rotatelogs logs/web_error_log-%Y-%m-%d.log 86400"
CustomLog "|bin/rotatelogs logs/web_access_log-%Y-%m-%d.log 86400" combined
ExpiresActive On
ExpiresByType image/gif "access plus 1 days"
ExpiresByType image/png "access plus 1 days"
ExpiresByType image/jpeg "access plus 1 days"
ExpiresByType text/css "access plus 1 days"
ExpiresByType application/javascript "access plus 1 days"
ExpiresByType application/x-shockwave-flash "access plus 1 days"
# Cache-Control: no-cache, no-store, max-age=0
# Pragma: no-cache 가 설정된 경우 제외 작업
Header unset Cache-Control
Header set Pragma "none"
</VirtualHost>
설정 방법은 다음과 같으며, plus
는 생략이 가능합니다.
ExpiresDefault "<base> [plus] {<num> <type>}*"
ExpiresByType type/encoding "<base> [plus] {<num> <type>}*"
ExpiresByType image/gif "access plus 1 days"
ExpiresByType image/gif "access 1 days"
캐시 설정 단위는 아래처럼 가능합니다.
- years, months, weeks, days, hours, minutes, seconds
캐시 설정 전/후 비교
변경 전 3.6MB 다운로드하던 리소스가 24.3KB로 되었으며, 다운로드 용량이 표시되던 항목이 memory cache, disk cache로 변경된 것을 확인할 수 있으며, 최종적으로 3.41 걸리던 시간이 1.02초로 단축되었습니다
참고
반응형
'FullStack > 41. WEB.WAS' 카테고리의 다른 글
CVE-2022-3786 및 CVE-2022-3602: X.509 이메일 주소 버퍼 오버플로 (0) | 2022.11.03 |
---|---|
Apache HTTPD Server 컴파일 (0) | 2022.03.21 |
웹 서비스 성능 개선 - 텍스트 리소스 압축(gzip) 전송 (0) | 2022.02.14 |
Apache httpd - Tomcat 연결 끊김(502) 현상 (0) | 2022.02.03 |
톰켓 MariaDB를 이용한 세션 관리 (0) | 2022.01.21 |