Optimized .htaccess???
        Posted  
        
            by StackOverflowNewbie
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by StackOverflowNewbie
        
        
        
        Published on 2010-04-28T07:05:09Z
        Indexed on 
            2010/04/28
            7:13 UTC
        
        
        Read the original article
        Hit count: 617
        
I'd appreciate some feedback on the compression and caching configuration below. Trying to come up with a general purpose, optimized compression and caching configuration. If possible:
- Note your PageSpeed and YSlow grades
- Add configuration to your .htaccess
- Clear your cache
- Note your PageSpeed and YSlow grades to see if there are any improvements (or degradations)
NOTE: Make sure you have appropriate modules loaded.
Any feedback is much appreciated. Thanks.
# JavaScript MIME type issues:
#   1. Apache uses "application/javascript": http://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x/conf/mime.types  
#   2. IIS uses "application/x-javascript": http://technet.microsoft.com/en-us/library/bb742440.aspx
#   3. SVG specification says it is text/ecmascript: http://www.w3.org/TR/2001/REC-SVG-20010904/script.html#ScriptElement
#   4. HTML specification says it is text/javascript: http://www.w3.org/TR/1999/REC-html401-19991224/interact/scripts.html#h-18.2.2.2
#   5. "text/ecmascript" and "text/javascript" are considered obsolete: http://www.rfc-editor.org/rfc/rfc4329.txt
#-------------------------------------------------------------------------------
# Compression
#-------------------------------------------------------------------------------
<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE application/xhtml+xml
    AddOutputFilterByType DEFLATE application/xml
    AddOutputFilterByType DEFLATE application/atom+xml
    AddOutputFilterByType DEFLATE text/css
    AddOutputFilterByType DEFLATE text/html
    AddOutputFilterByType DEFLATE text/plain
    AddOutputFilterByType DEFLATE text/xml
    # The following MIME types are in the process of registration
    AddOutputFilterByType DEFLATE application/xslt+xml
    AddOutputFilterByType DEFLATE image/svg+xml
    # The following MIME types are NOT registered
    AddOutputFilterByType DEFLATE application/mathml+xml
    AddOutputFilterByType DEFLATE application/rss+xml  
    # Deal with JavaScript MIME type issues
    AddOutputFilterByType DEFLATE application/javascript
    AddOutputFilterByType DEFLATE application/x-javascript
    AddOutputFilterByType DEFLATE text/ecmascript
    AddOutputFilterByType DEFLATE text/javascript
</IfModule>
#-------------------------------------------------------------------------------
# Expires header
#-------------------------------------------------------------------------------
<IfModule mod_expires.c>
    # 1. Set Expires to a minimum of 1 month, and preferably up to 1 year, in the future
    #     (but not more than 1 year as that would violate the RFC guidelines)
    # 2. Use "Expires" over "Cache-Control: max-age" because it is more widely accepted
    ExpiresActive on
    ExpiresByType application/pdf "access plus 1 year"
    ExpiresByType application/x-shockwave-flash "access plus 1 year"   
    ExpiresByType image/bmp "access plus 1 year" 
    ExpiresByType image/gif "access plus 1 year"
    ExpiresByType image/jpeg "access plus 1 year"
    ExpiresByType image/png "access plus 1 year"
    ExpiresByType image/svg+xml "access plus 1 year"
    ExpiresByType image/tiff "access plus 1 year"
    ExpiresByType image/x-icon "access plus 1 year"
    ExpiresByType text/css "access plus 1 year"
    ExpiresByType video/x-flv "access plus 1 year"
    # Deal with JavaScript MIME type issues
    ExpiresByType application/javascript "access plus 1 year"
    ExpiresByType application/x-javascript "access plus 1 year"
    ExpiresByType text/ecmascript "access plus 1 year"
    ExpiresByType text/javascript "access plus 1 year"
    # Probably better to explicitly declare MIME types than to have a blanket rule for expiration
    # Uncomment below if you disagree 
    #ExpiresDefault "access plus 1 year"       
</IfModule>
#-------------------------------------------------------------------------------
# Caching
#-------------------------------------------------------------------------------
<IfModule mod_headers.c>
  <FilesMatch "\.(bmp|css|flv|gif|ico|jpg|jpeg|js|pdf|png|svg|swf|tif|tiff)$">
    Header add Cache-Control "public"
    Header unset ETag
    Header unset Last-Modified       
    FileETag none   
  </FilesMatch>
</IfModule>
© Stack Overflow or respective owner