perf: add .htaccess for GZIP compression and browser caching
- GZIP: HTML, CSS, JS, SVG, fonts compressed - Cache: CSS/JS 1 month, images/fonts 1 year, HTML 1 hour - Estimated savings: ~345 KiB on repeat visits
This commit is contained in:
60
.htaccess
Normal file
60
.htaccess
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
# Enable GZIP Compression
|
||||||
|
<IfModule mod_deflate.c>
|
||||||
|
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript
|
||||||
|
AddOutputFilterByType DEFLATE application/javascript application/x-javascript application/json
|
||||||
|
AddOutputFilterByType DEFLATE application/xml application/xhtml+xml
|
||||||
|
AddOutputFilterByType DEFLATE image/svg+xml
|
||||||
|
AddOutputFilterByType DEFLATE font/woff font/woff2 application/font-woff application/font-woff2
|
||||||
|
</IfModule>
|
||||||
|
|
||||||
|
# Browser Caching - Static Assets
|
||||||
|
<IfModule mod_expires.c>
|
||||||
|
ExpiresActive On
|
||||||
|
|
||||||
|
# Images (1 year)
|
||||||
|
ExpiresByType image/jpeg "access plus 1 year"
|
||||||
|
ExpiresByType image/png "access plus 1 year"
|
||||||
|
ExpiresByType image/gif "access plus 1 year"
|
||||||
|
ExpiresByType image/webp "access plus 1 year"
|
||||||
|
ExpiresByType image/svg+xml "access plus 1 year"
|
||||||
|
ExpiresByType image/x-icon "access plus 1 year"
|
||||||
|
|
||||||
|
# Fonts (1 year)
|
||||||
|
ExpiresByType font/woff "access plus 1 year"
|
||||||
|
ExpiresByType font/woff2 "access plus 1 year"
|
||||||
|
ExpiresByType application/font-woff "access plus 1 year"
|
||||||
|
ExpiresByType application/font-woff2 "access plus 1 year"
|
||||||
|
ExpiresByType font/ttf "access plus 1 year"
|
||||||
|
ExpiresByType font/otf "access plus 1 year"
|
||||||
|
|
||||||
|
# CSS & JavaScript (1 month)
|
||||||
|
ExpiresByType text/css "access plus 1 month"
|
||||||
|
ExpiresByType application/javascript "access plus 1 month"
|
||||||
|
ExpiresByType text/javascript "access plus 1 month"
|
||||||
|
|
||||||
|
# HTML (1 hour)
|
||||||
|
ExpiresByType text/html "access plus 1 hour"
|
||||||
|
</IfModule>
|
||||||
|
|
||||||
|
# Cache-Control Headers
|
||||||
|
<IfModule mod_headers.c>
|
||||||
|
# CSS & JS - 1 month
|
||||||
|
<FilesMatch "\.(css|js)$">
|
||||||
|
Header set Cache-Control "public, max-age=2592000, immutable"
|
||||||
|
</FilesMatch>
|
||||||
|
|
||||||
|
# Images - 1 year
|
||||||
|
<FilesMatch "\.(jpg|jpeg|png|gif|webp|svg|ico)$">
|
||||||
|
Header set Cache-Control "public, max-age=31536000, immutable"
|
||||||
|
</FilesMatch>
|
||||||
|
|
||||||
|
# Fonts - 1 year
|
||||||
|
<FilesMatch "\.(woff|woff2|ttf|otf|eot)$">
|
||||||
|
Header set Cache-Control "public, max-age=31536000, immutable"
|
||||||
|
</FilesMatch>
|
||||||
|
|
||||||
|
# HTML - no-cache (always check for updates)
|
||||||
|
<FilesMatch "\.(html|htm)$">
|
||||||
|
Header set Cache-Control "public, max-age=3600, must-revalidate"
|
||||||
|
</FilesMatch>
|
||||||
|
</IfModule>
|
||||||
Reference in New Issue
Block a user