nugawiki

./categories/server

Apache·Tomcat 홈페이지 속도 최적화

업데이트 2026-07-21 조회수

Apache·Tomcat 홈페이지 속도 최적화

정적 리소스 캐시 (Cache-Control)

<IfModule mod_headers.c>
<FilesMatch ".(js|css|xml|gz|html|json)$">
    Header append Vary: Accept-Encoding
</FilesMatch>
<FilesMatch "\.(ico|flv|jpg|jpeg|png|gif|css|swf)$">
    Header set Cache-Control "max-age=2678400, public"
</FilesMatch>
<FilesMatch "\.(html|htm)$">
    Header set Cache-Control "max-age=7200, private, must-revalidate"
</FilesMatch>
</IfModule>

gzip 압축 (mod_deflate)

<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/css text/javascript text/plain text/xml
AddOutputFilterByType DEFLATE application/javascript application/xml application/json
AddOutputFilterByType DEFLATE font/woff font/ttf image/svg+xml image/x-icon
DeflateCompressionLevel 9
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
Header append Vary User-Agent
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|bmp|zip|gz|rar|7z)$ no-gzip dont-vary
</IfModule>

만료 헤더 (mod_expires) — 정적 1개월, HTML 즉시 만료

<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 month"
ExpiresByType text/html "access plus 0 seconds"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
# 폰트/이미지/오디오/비디오도 동일 패턴으로 1개월
<IfModule mod_headers.c>
    Header append Cache-Control "public"
</IfModule>
</IfModule>

Tomcat — conf/server.xml AJP 압축

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8"
    maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
    compressableMimeType="text/html,text/xml,text/plain,text/javascript,text/css,application/javascript"
    compression="on" compressionMinSize="1024"
    noCompressionUserAgents="gozilla, traviata"
    connectionTimeout="60000" />

./comments