Caching's Got Me Completely Confused

Cache headers have me completely confused. I have been researching them for a few days now and for some reason I just cant wrap my head around how to do it right (for my needs). I now turn to you o great forum gods.

My quest for knowledge all stared after reading this page (and others), http://www.askapache.com/htaccess/apache-speed-cache-control.html and the pages in the “Easy Apache Speed Tips Articles” section. While I know this forum is not about Apache, the topic of discussion is headers and I believe that falls here.

My goal is for all objects (images, js, css) in my page to get cached by the browser. Then when the object has been updated on the server and the next time a browser views the object, the new object is downloaded. Yes I know this all sounds basic, but which header to use and how to set it is whats confusing me.

To make my confusion worse, I cant seem to wrap my head around how the headers in the HTML set caching properties for every object in the page. Maybe im just looking too much into it and that’s just how the process of caching works.

From the suggestion of this page, http://www.askapache.com/htaccess/apache-speed-compression.html I have set my .htaccess file as below. Is it wrong? Below that is my current headers from my HTML page. Do I even need those in there if its set in the .htaccess? So confused…


#####################################################
# CONFIGURE media caching - http://www.askapache.com/htaccess/apache-speed-compression.html
#
Header unset ETag
FileETag None
<FilesMatch "(?i)^.*\\.(ico|flv|jpg|jpeg|png|gif|js|css)$">
Header unset Last-Modified
#Header set Expires "Fri, 21 Dec 2012 00:00:00 GMT"
Header set Cache-Control "max-age=604800, must-revalidate, public, no-transform"
</FilesMatch>
#
#####################################################

#####################################################
# CONFIGURE media caching - http://www.askapache.com/htaccess/apache-speed-compression.html
#
<IfModule mod_deflate.c>
<FilesMatch "\\.(js|css)$">
SetOutputFilter DEFLATE
</FilesMatch>
</IfModule>
#
#####################################################


<meta http-equiv="expires" content="Fri, 21 Jan 2011 00:00:00 GMT">
<meta http-equiv="Cache-Control" content="public">

So in final i guess my question is, how do i set the most effective headers in my HTML or better my .htaccess file to achieve the fastest page load speed? How do I insure users are always getting the most current version of a file. Thanks for reading this and the time to respond.

Cesar

Apache has a module specifically for this purpose mod_expires
That should give you all the cache control you’ll ever need (and it’s easy too!), but not all hosts have it installed so you should check for that first.

Regarding the question of setting META tags for caching vs HTTP headers, check this: http://www.mnot.net/cache_docs/#META

@ScallioXTX - thanks fro the info