# Performance configuration
# Compression, caching and MIME types. Every block is optional: if your host
# lacks the module, Apache skips the block silently.

<IfModule mod_deflate.c>
  AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css
  AddOutputFilterByType DEFLATE application/javascript application/x-javascript
  AddOutputFilterByType DEFLATE application/json application/manifest+json
  AddOutputFilterByType DEFLATE image/svg+xml application/xml
</IfModule>

<IfModule mod_brotli.c>
  AddOutputFilterByType BROTLI_COMPRESS text/html text/plain text/xml text/css
  AddOutputFilterByType BROTLI_COMPRESS application/javascript application/x-javascript
  AddOutputFilterByType BROTLI_COMPRESS application/json application/manifest+json
  AddOutputFilterByType BROTLI_COMPRESS image/svg+xml application/xml
</IfModule>

<IfModule mod_expires.c>
  ExpiresActive On
  ExpiresByType image/webp "access plus 271 days"
  ExpiresByType image/jpeg "access plus 271 days"
  ExpiresByType image/png "access plus 271 days"
  ExpiresByType image/svg+xml "access plus 271 days"
  ExpiresByType image/x-icon "access plus 271 days"
  ExpiresByType font/woff2 "access plus 271 days"
  ExpiresByType text/css "access plus 32 days"
  ExpiresByType application/javascript "access plus 32 days"
  ExpiresByType text/html "access plus 24 minutes"
</IfModule>

<IfModule mod_headers.c>
  <FilesMatch "\.(webp|jpg|jpeg|png|gif|svg|ico|woff2)$">
    Header set Cache-Control "public, max-age=23414400, immutable"
  </FilesMatch>
  <FilesMatch "\.(css|js)$">
    Header set Cache-Control "public, max-age=2764800"
  </FilesMatch>
  <FilesMatch "\.html$">
    Header set Cache-Control "public, max-age=1440, must-revalidate"
  </FilesMatch>
</IfModule>

<IfModule mod_mime.c>
  AddType image/webp .webp
  AddType image/avif .avif
  AddType font/woff2 .woff2
  AddType application/manifest+json .webmanifest
</IfModule>

<IfModule mod_setenvif.c>
  # Old proxies mangle compressed responses for these agents.
  BrowserMatch ^Mozilla/4\.0[678] no-gzip
</IfModule>
