1. Advertising
    y u no do it?

    Advertising (learn more)

    Advertise virtually anything here, with CPM banner ads, CPM email ads and CPC contextual links. You can target relevant areas of the site and show ads based on geographical location of the user if you wish.

    Starts at just $1 per CPM or $0.10 per CPC.

Use htaccess to speed up your website

Discussion in 'Apache' started by scylla, Jun 19, 2012.

  1. #1
    I have made this guide because in the past I have seen so many other examples of "htaccess files that work" when in reality they do not.
    Therefor, I have decided to have a look at w3tc's htaccess that it produces and quickly found that it can be applied to much much more than just wordpress.
    Applying the following htaccess will cache your static files and it will automatically handle gzipping. For example, in this vbulletin forum here... in the admin cp I have the gzip compression in there TURNED OFF. Yet my resources are perfectly gzipped according to yslow, pagespeed, gtmetrix & webpagetest.
    Before you apply the htaccess below, I STRONGLY recommend that you make a backup of your htaccess just incase your host does not have mod gzip or mod deflate enabled; two apache modules that are vital to caching & gzipping.

    I decided to make this thread after I made my original step by step guide on how to speed up vbulletin at vbulletin.org and after I decided to release it to the public on my site, vgchat.

    There are several steps to improve your page loading speed. I will go over a few steps that will improve your site's loading time.

    Step 1: Tweak your htaccess.
    Open the htaccess file in your root and add the following below any url rewrite rules you may have:

    Doing this covers the following Pagespeed & Yslow Rules.

    Leverage browser caching
    Specify a cache validator
    Enable gzip compression


    # Author: Final Kaoss (aka: Extreme-Gaming)
    # Version 2.6
    RewriteEngine on
    
    #Deny attempts to view the Htaccess file.
    <Files .htaccess>
    Order allow,deny
    Deny from all
    </Files>
    # BEGIN Browser Caching/Headers
    <IfModule mod_mime.c>
        AddType text/css .css
        AddType text/richtext .rtf .rtx
        AddType image/svg+xml .svg .svgz
        AddType text/plain .txt
        AddType text/xsd .xsd
        AddType text/xsl .xsl
        AddType video/asf .asf .asx .wax .wmv .wmx
        AddType video/avi .avi
        AddType image/bmp .bmp
        AddType application/java .class
        AddType video/divx .divx
        AddType application/msword .doc .docx
        AddType application/x-msdownload .exe
        AddType image/gif .gif
        AddType application/x-gzip .gz .gzip
        AddType image/x-icon .ico
        AddType image/jpeg .jpg .jpeg .jpe
        AddType application/vnd.ms-access .mdb
        AddType audio/midi .mid .midi
        AddType video/quicktime .mov .qt
        AddType audio/mpeg .mp3 .m4a
        AddType video/mp4 .mp4 .m4v
        AddType video/mpeg .mpeg .mpg .mpe
        AddType application/vnd.ms-project .mpp
        AddType application/vnd.oasis.opendocument.database .odb
        AddType application/vnd.oasis.opendocument.chart .odc
        AddType application/vnd.oasis.opendocument.formula .odf
        AddType application/vnd.oasis.opendocument.graphics .odg
        AddType application/vnd.oasis.opendocument.presentation .odp
        AddType application/vnd.oasis.opendocument.spreadsheet .ods
        AddType application/vnd.oasis.opendocument.text .odt
        AddType audio/ogg .ogg
        AddType application/pdf .pdf
        AddType image/png .png
        AddType application/vnd.ms-powerpoint .pot .pps .ppt .pptx
        AddType audio/x-realaudio .ra .ram
        AddType application/x-shockwave-flash .swf
        AddType application/x-tar .tar
        AddType image/tiff .tif .tiff
        AddType audio/wav .wav
        AddType audio/wma .wma
        AddType application/vnd.ms-write .wri
        AddType application/vnd.ms-excel .xla .xls .xlsx .xlt .xlw
        AddType application/zip .zip
    </IfModule>
    <IfModule mod_expires.c>
        ExpiresActive On
        ExpiresByType text/css A2628000
        ExpiresByType text/richtext A3600
        ExpiresByType image/svg+xml A3600
        ExpiresByType text/plain A3600
        ExpiresByType text/xsd A3600
        ExpiresByType text/xsl A3600
        ExpiresByType video/asf A2628000
        ExpiresByType video/avi A2628000
        ExpiresByType image/bmp A2628000
        ExpiresByType application/java A2628000
        ExpiresByType video/divx A2628000
        ExpiresByType application/msword A2628000
        ExpiresByType application/x-msdownload A2628000
        ExpiresByType image/gif A2628000
        ExpiresByType application/x-gzip A2628000
        ExpiresByType image/x-icon A2628000
        ExpiresByType image/jpeg A2628000
        ExpiresByType application/vnd.ms-access A2628000
        ExpiresByType audio/midi A2628000
        ExpiresByType video/quicktime A2628000
        ExpiresByType audio/mpeg A2628000
        ExpiresByType video/mp4 A2628000
        ExpiresByType video/mpeg A2628000
        ExpiresByType application/vnd.ms-project A2628000
        ExpiresByType application/vnd.oasis.opendocument.database A2628000
        ExpiresByType application/vnd.oasis.opendocument.chart A2628000
        ExpiresByType application/vnd.oasis.opendocument.formula A2628000
        ExpiresByType application/vnd.oasis.opendocument.graphics A2628000
        ExpiresByType application/vnd.oasis.opendocument.presentation A2628000
        ExpiresByType application/vnd.oasis.opendocument.spreadsheet A2628000
        ExpiresByType application/vnd.oasis.opendocument.text A2628000
        ExpiresByType audio/ogg A2628000
        ExpiresByType application/pdf A2628000
        ExpiresByType image/png A2628000
        ExpiresByType application/vnd.ms-powerpoint A2628000
        ExpiresByType audio/x-realaudio A2628000
        ExpiresByType application/x-shockwave-flash A2628000
        ExpiresByType application/x-tar A2628000
        ExpiresByType image/tiff A2628000
        ExpiresByType audio/wav A2628000
        ExpiresByType audio/wma A2628000
        ExpiresByType application/vnd.ms-write A2628000
        ExpiresByType application/vnd.ms-excel A2628000
        ExpiresByType application/zip A2628000
    </IfModule>
    <IfModule mod_deflate.c>
        <IfModule mod_setenvif.c>
            BrowserMatch ^Mozilla/4 gzip-only-text/html
            BrowserMatch ^Mozilla/4\.0[678] no-gzip
            BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
            BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
        </IfModule>
        <IfModule mod_headers.c>
            Header append Vary User-Agent env=!dont-vary
        </IfModule>
        <IfModule mod_filter.c>
            AddOutputFilterByType DEFLATE text/css application/x-javascript text/html text/richtext image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon
        </IfModule>
    </IfModule>
    <FilesMatch "\.(css|CSS|)$">
        <IfModule mod_headers.c>
            Header set Pragma "public"
            Header append Cache-Control "public, must-revalidate, proxy-revalidate"
        </IfModule>
        FileETag MTime Size
        <IfModule mod_headers.c>
             Header set X-Powered-By "Step by Step guide to speed up your VB4 (forum only)"
        </IfModule>
    </FilesMatch>
    <FilesMatch "\.(rtf|rtx|svg|svgz|txt|xsd|xsl|RTF|RTX|SVG|SVGZ|TXT|XSD|XSL|)$">
        <IfModule mod_headers.c>
            Header set Pragma "public"
            Header append Cache-Control "public, must-revalidate, proxy-revalidate"
        </IfModule>
        FileETag MTime Size
        <IfModule mod_headers.c>
             Header set X-Powered-By "Step by Step guide to speed up your VB4 (forum only)"
        </IfModule>
    </FilesMatch>
    <FilesMatch "\.(asf|asx|wax|wmv|wmx|avi|bmp|class|divx|doc|docx|exe|gif|gz|gzip|ico|jpg|jpeg|jpe|mdb|mid|midi|mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mpe|mpp|odb|odc|odf|odg|odp|ods|odt|ogg|pdf|png|pot|pps|ppt|pptx|ra|ram|swf|tar|tif|tiff|wav|wma|wri|xla|xls|xlsx|xlt|xlw|zip|ASF|ASX|WAX|WMV|WMX|AVI|BMP|CLASS|DIVX|DOC|DOCX|EXE|GIF|GZ|GZIP|ICO|JPG|JPEG|JPE|MDB|MID|MIDI|MOV|QT|MP3|M4A|MP4|M4V|MPEG|MPG|MPE|MPP|ODB|ODC|ODF|ODG|ODP|ODS|ODT|OGG|PDF|PNG|POT|PPS|PPT|PPTX|RA|RAM|SWF|TAR|TIF|TIFF|WAV|WMA|WRI|XLA|XLS|XLSX|XLT|XLW|ZIP)$">
        <IfModule mod_headers.c>
            Header set Pragma "public"
            Header append Cache-Control "public, must-revalidate, proxy-revalidate"
        </IfModule>
        FileETag MTime Size
        <IfModule mod_headers.c>
             Header set X-Powered-By "Step by Step guide to speed up your VB4 (forum only)"
        </IfModule>
    </FilesMatch>
    # End Browser Caching/Headers 
    Code (markup):
    You can check your results at these two sites.

    http://gtmetrix.com/dashboard.html
    http://www.webpagetest.org/

    If you fail caching or gzip rules for your local pages (ignore external resources on these tests!) then you need to find a new host, quite simply.


    Additionally, you can use the htaccess above for virtually any website. It does not matter if you are running a website that you built by hand that uses html or php, phpbb, vbulletin, mybb, invision, xenforo, smf, wordpress, joomla, phpnuke or any other CMS that you can think of. If your software has "seo friendly urls", you may add those rules into the htaccess file provided and they will work just fine. Just make sure that you understand what part of the code does the rewriting before you just blindly paste it along in there however..

    Feel free to ask any questions here.
     
    Last edited: Jun 19, 2012
    scylla, Jun 19, 2012 IP
  2. SpeakWhatsReal

    SpeakWhatsReal Peon

    Messages:
    23
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #2
    Actually, it would be faster if you do not use .htaccess at all and use caching methods through your server's configuration (Lighttpd, nginx / etc)
     
    SpeakWhatsReal, Jun 22, 2012 IP
  3. InnovusHost

    InnovusHost Peon

    Messages:
    137
    Likes Received:
    1
    Best Answers:
    0
    Trophy Points:
    0
    #3
    Just enabling gzip compression should be good enough to speed up your site.
     
    InnovusHost, Jun 23, 2012 IP
  4. scylla

    scylla Well-Known Member

    Messages:
    1,007
    Likes Received:
    31
    Best Answers:
    1
    Trophy Points:
    175
    #4
    Yes enabling gzip does help & SpeakWhatsReal, there are tons of people on shared hosting who don't have access to the server's config (Lighttpd, nginx / etc). For them, caching via htaccess is the way to go.
     
    scylla, Jun 23, 2012 IP
  5. scavy

    scavy Peon

    Messages:
    40
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #5
    This way helps better..!!

     
    scavy, Jun 23, 2012 IP
  6. SolidShellSecurity

    SolidShellSecurity Banned

    Messages:
    264
    Likes Received:
    3
    Best Answers:
    1
    Trophy Points:
    45
    #6
    We run cache and serve content from our frontend systems on our servers for all our clients. They notice faster to instant page loads almost instantly. =)
     
    SolidShellSecurity, Jun 23, 2012 IP
  7. atxsurf

    atxsurf Peon

    Messages:
    2,398
    Likes Received:
    21
    Best Answers:
    1
    Trophy Points:
    0
    #7
    More precisely it will allow browser & proxy caching for your static files
     
    atxsurf, Jun 23, 2012 IP
  8. scylla

    scylla Well-Known Member

    Messages:
    1,007
    Likes Received:
    31
    Best Answers:
    1
    Trophy Points:
    175
    #8
    Sure it will if you want to get all technical about it lol.
     
    scylla, Jun 24, 2012 IP
  9. atxsurf

    atxsurf Peon

    Messages:
    2,398
    Likes Received:
    21
    Best Answers:
    1
    Trophy Points:
    0
    #9
    seriously there is a server caching which is a whole different game
    that is if some one (or bot) hits the refresh button like crazy your mysql is not getting hit at the same rate but is being served from disk cache with no performance impact
     
    atxsurf, Jun 24, 2012 IP
  10. scylla

    scylla Well-Known Member

    Messages:
    1,007
    Likes Received:
    31
    Best Answers:
    1
    Trophy Points:
    175
    #10
    Yep that's right, glad I didn't have to explain that bit :)
     
    scylla, Jun 24, 2012 IP
  11. atxsurf

    atxsurf Peon

    Messages:
    2,398
    Likes Received:
    21
    Best Answers:
    1
    Trophy Points:
    0
    #11
    ps: is there an octopus stuck in your google avatar? :confused: Please free let it go!
     
    atxsurf, Jun 24, 2012 IP
  12. scylla

    scylla Well-Known Member

    Messages:
    1,007
    Likes Received:
    31
    Best Answers:
    1
    Trophy Points:
    175
    #12
    uh no, that's a google spider lol
     
    scylla, Jun 24, 2012 IP
  13. Brandon Sheley

    Brandon Sheley Prominent Member

    Messages:
    9,678
    Likes Received:
    594
    Best Answers:
    2
    Trophy Points:
    370
    #13
    Nice tips scylla, thanks for the updates :)

    *subscribed*
     
    Brandon Sheley, Jun 27, 2012 IP
  14. Harijith

    Harijith Peon

    Messages:
    20
    Likes Received:
    1
    Best Answers:
    0
    Trophy Points:
    0
    #14
    Thanks for sharing :) Will keep a note of it :D
     
    Harijith, Jul 2, 2012 IP
  15. Hostwinds_Dan

    Hostwinds_Dan Peon

    Messages:
    150
    Likes Received:
    2
    Best Answers:
    0
    Trophy Points:
    0
    #15
    Very useful guide - not many people know that you can immensely increase the speed of your site via the .htaccess. Thanks Scylla
     
    Hostwinds_Dan, Jul 3, 2012 IP
  16. Iain R

    Iain R Greenhorn

    Messages:
    91
    Likes Received:
    3
    Best Answers:
    0
    Trophy Points:
    23
    #16
    Are these .htaccess changes still viable in 2013?
     
    Iain R, Mar 19, 2013 IP
  17. scylla

    scylla Well-Known Member

    Messages:
    1,007
    Likes Received:
    31
    Best Answers:
    1
    Trophy Points:
    175
    #17
    absolutely.
     
    scylla, Apr 12, 2013 IP
  18. Iain R

    Iain R Greenhorn

    Messages:
    91
    Likes Received:
    3
    Best Answers:
    0
    Trophy Points:
    23
    #18

    Thanks. I was wondering if it were still the case
     
    Iain R, Apr 12, 2013 IP
  19. scylla

    scylla Well-Known Member

    Messages:
    1,007
    Likes Received:
    31
    Best Answers:
    1
    Trophy Points:
    175
    #19
    Alternatively, you can use google pagespeed service in conjunction with the htaccess above, as well to help with the caching. With my use of it, I believe it's best to only let it handle caching js & css, don't let it cache the images or else you will lose search rankings for them.
     
    scylla, Apr 12, 2013 IP
  20. palsman

    palsman Active Member

    Messages:
    156
    Likes Received:
    1
    Best Answers:
    1
    Trophy Points:
    95
    #20
    Thanks, it's very helpful for shared hosting
     
    palsman, Apr 19, 2013 IP