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.
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)
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.
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. =)
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
Very useful guide - not many people know that you can immensely increase the speed of your site via the .htaccess. Thanks Scylla
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.