-
-
Save m1g0r/23f9931cbbac525e23b5645419894df8 to your computer and use it in GitHub Desktop.
htaccess mod_expires / mod_cache / mod_deflate / mod_headers
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# ------------------------------------------------------------------------------ | |
# | |
# Curtousy of the Magento Support Center | |
# http://magentosupport.help/what-are-expires-headers-and-how-do-i-implement-them/ | |
# | |
# ------------------------------------------------------------------------------ | |
# ------------------------------------------------------------------------------ | |
# | Mod Caching via Apache | | |
# ------------------------------------------------------------------------------ | |
<IfModule mod_cache.c> | |
<IfModule mod_mem_cache.c> | |
CacheEnable mem / | |
MCacheSize 4096 | |
MCacheMaxObjectCount 100 | |
MCacheMinObjectSize 1 | |
MCacheMaxObjectSize 2048 | |
</IfModule> | |
</IfModule> | |
# ------------------------------------------------------------------------------ | |
# | Proper MIME types for all files | | |
# ------------------------------------------------------------------------------ | |
<IfModule mod_mime.c> | |
# Audio | |
AddType audio/mp4 m4a f4a f4b | |
AddType audio/ogg oga ogg | |
# JavaScript | |
# Normalize to standard type (it's sniffed in IE anyways): | |
# http://tools.ietf.org/html/rfc4329#section-7.2 | |
AddType application/javascript js jsonp | |
AddType application/json json | |
# Video | |
AddType video/mp4 mp4 m4v f4v f4p | |
AddType video/ogg ogv | |
AddType video/webm webm | |
AddType video/x-flv flv | |
# Web fonts | |
AddType application/font-woff woff | |
AddType application/vnd.ms-fontobject eot | |
# Browsers usually ignore the font MIME types and sniff the content, | |
# however, Chrome shows a warning if other MIME types are used for the | |
# following fonts. | |
AddType application/x-font-ttf ttc ttf | |
AddType font/opentype otf | |
# Make SVGZ fonts work on iPad: | |
# https://twitter.com/FontSquirrel/status/14855840545 | |
AddType image/svg+xml svg svgz | |
AddEncoding gzip svgz | |
# Other | |
AddType application/octet-stream safariextz | |
AddType application/x-chrome-extension crx | |
AddType application/x-opera-extension oex | |
AddType application/x-shockwave-flash swf | |
AddType application/x-web-app-manifest+json webapp | |
AddType application/x-xpinstall xpi | |
AddType application/xml atom rdf rss xml | |
AddType image/webp webp | |
AddType image/x-icon ico | |
AddType text/cache-manifest appcache manifest | |
AddType text/vtt vtt | |
AddType text/x-component htc | |
AddType text/x-vcard vcf | |
</IfModule> | |
# ------------------------------------------------------------------------------ | |
# | ETag removal | | |
# ------------------------------------------------------------------------------ | |
# Since we're sending far-future expires headers (see below), ETags can | |
# be removed: http://developer.yahoo.com/performance/rules.html#etags. | |
# `FileETag None` is not enough for every server. | |
<IfModule mod_headers.c> | |
Header unset ETag | |
<filesMatch "\.(ico|jpe?g|png|gif|swf)$"> | |
Header set Cache-Control "max-age=2592000, public" | |
</filesMatch> | |
<filesMatch "\.(css)$"> | |
Header set Cache-Control "max-age=604800, public" | |
</filesMatch> | |
<filesMatch "\.(js)$"> | |
Header set Cache-Control "max-age=216000, private" | |
</filesMatch> | |
<filesMatch "\.(x?html?|php)$"> | |
Header set Cache-Control "max-age=600, private, must-revalidate" | |
</filesMatch> | |
</IfModule> | |
FileETag None | |
# ------------------------------------------------------------------------------ | |
# | Expires headers (for better cache control) | | |
# ------------------------------------------------------------------------------ | |
# The following expires headers are set pretty far in the future. If you don't | |
# control versioning with filename-based cache busting, consider lowering the | |
# cache time for resources like CSS and JS to something like 1 week. | |
<IfModule mod_expires.c> | |
ExpiresActive on | |
ExpiresDefault "access plus 1 month" | |
# CSS | |
ExpiresByType text/css "access plus 1 year" | |
# Data interchange | |
ExpiresByType application/json "access plus 0 seconds" | |
ExpiresByType application/xml "access plus 0 seconds" | |
ExpiresByType text/xml "access plus 0 seconds" | |
# Favicon (cannot be renamed!) | |
ExpiresByType image/x-icon "access plus 1 week" | |
# HTML components (HTCs) | |
ExpiresByType text/x-component "access plus 1 month" | |
# HTML | |
ExpiresByType text/html "access plus 0 seconds" | |
# JavaScript | |
ExpiresByType application/javascript "access plus 1 year" | |
# Manifest files | |
ExpiresByType application/x-web-app-manifest+json "access plus 0 seconds" | |
ExpiresByType text/cache-manifest "access plus 0 seconds" | |
# Media | |
ExpiresByType audio/ogg "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 video/mp4 "access plus 1 month" | |
ExpiresByType video/ogg "access plus 1 month" | |
ExpiresByType video/webm "access plus 1 month" | |
# Web feeds | |
ExpiresByType application/atom+xml "access plus 1 hour" | |
ExpiresByType application/rss+xml "access plus 1 hour" | |
# Web fonts | |
ExpiresByType application/font-woff "access plus 1 month" | |
ExpiresByType application/vnd.ms-fontobject "access plus 1 month" | |
ExpiresByType application/x-font-ttf "access plus 1 month" | |
ExpiresByType font/opentype "access plus 1 month" | |
ExpiresByType image/svg+xml "access plus 1 month" | |
</IfModule> | |
<IfModule mod_deflate.c> | |
############################################ | |
## enable apache served files compression | |
## http://developer.yahoo.com/performance/rules.html#gzip | |
# Insert filter on all content | |
SetOutputFilter DEFLATE | |
# Insert filter on selected content types only | |
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript | |
# Netscape 4.x has some problems... | |
BrowserMatch ^Mozilla/4 gzip-only-text/html | |
# Netscape 4.06-4.08 have some more problems | |
BrowserMatch ^Mozilla/4\.0[678] no-gzip | |
# MSIE masquerades as Netscape, but it is fine | |
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html | |
# Don't compress images | |
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary | |
# Make sure proxies don't deliver the wrong content | |
Header append Vary User-Agent env=!dont-vary | |
</IfModule> | |
# ------------------------------------------------------------------------------ | |
# | GZip Compression (for faster page transfers) | | |
# ------------------------------------------------------------------------------ | |
# GZip Compression | |
# compress text, html, javascript, css, xml: | |
# | |
<IfModule mod_deflate.c> | |
AddOutputFilterByType DEFLATE text/plain | |
AddOutputFilterByType DEFLATE text/html | |
AddOutputFilterByType DEFLATE text/xml | |
AddOutputFilterByType DEFLATE text/css | |
AddOutputFilterByType DEFLATE application/xml | |
AddOutputFilterByType DEFLATE application/xhtml+xml | |
AddOutputFilterByType DEFLATE application/rss+xml | |
AddOutputFilterByType DEFLATE application/javascript | |
AddOutputFilterByType DEFLATE application/x-javascript | |
</IfModule> | |
# Limit bandwidth consumption | |
<IfModule mod_php5.c> | |
php_value zlib.output_compression 16386 | |
</IfModule> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment