title: How to set up caching for css/js static properly
body: <p>to prevent problem, when I update CSS/JS media files and browsers dont request new version, because they cache these files I used this solution: <a href="https://github.com/jaddison/django-cachebuster" rel="nofollow">https://github.com/jaddison/django-cachebuster</a>, that adds ?&lt;timestamp of file&gt; to CSS/JS filenames (replaces /media/main.css with /media/main.css?20012931203128. I assumed that it will force browsers to reload css file when timestamp is changed (file is updated) and use local cached version in other case. But what I see in Apache logs (and at firebug) is that browsers (at least Firefox) requests CSS/JS files for each reload of the page, even after getting 304 code, see fragment from logs:</p>
  
  <pre><code>XXX.255.115.60 - - [24/Jul/2011:04:17:25 -0700] "GET /media/main.css?333900240611 HTTP/1.1" 304 172 "" "Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1"
  XXX.255.115.60 - - [24/Jul/2011:04:17:26 -0700] "GET /media/main.js?270101180511 HTTP/1.1" 304 173 "" "Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1"
  XXX.255.115.60 - - [24/Jul/2011:04:17:34 -0700] "GET /media/main.css?333900240611 HTTP/1.1" 304 172 "" "Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1"
  XXX.255.115.60 - - [24/Jul/2011:04:17:35 -0700] "GET /media/main.js?270101180511 HTTP/1.1" 304 173 "" "Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1"
  XXX.255.115.60 - - [24/Jul/2011:04:17:44 -0700] "GET /media/main.css?333900240611 HTTP/1.1" 304 172 "" "Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1"
  XXX.255.115.60 - - [24/Jul/2011:04:17:44 -0700] "GET /media/main.js?270101180511 HTTP/1.1" 304 173 "" "Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1"
  </code></pre>
  
  <p>Of course, it makes my website slower. Is it possible to force browsers to update files only when timestamp after .css?... is changed?
  Thanks!</p>
  
  <p><strong>Upd:</strong>
  Here is an example of response &amp; request:</p>
  
  <p><strong>Request</strong></p>
  
  <pre><code>User-Agent  Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.2.18) Gecko/20110614 Firefox/3.6.18
  Accept  text/css,*/*;q=0.1
  Accept-Language en-gb,en;q=0.5
  Accept-Encoding gzip,deflate
  Accept-Charset  ISO-8859-1,utf-8;q=0.7,*;q=0.7
  Keep-Alive  115
  Referer 
  DNT 1
  Connection  keep-alive
  If-Modified-Since   Fri, 24 Jun 2011 05:39:33 GMT
  If-None-Match   "8ed02f1-a21-4a66ea04f2f40"
  </code></pre>
  
  <p><strong>Response</strong></p>
  
  <pre><code>Date    Sun, 24 Jul 2011 12:28:21 GMT
  Server  Apache
  Connection  Keep-Alive
  Keep-Alive  timeout=2, max=99
  Etag    "8ed02f1-a21-4a66ea04f2f40"
  </code></pre>
  
  <p><strong>Initial resp</strong></p>
  
  <pre><code>Date    Sun, 24 Jul 2011 12:51:05 GMT
  Server  Apache
  Last-Modified   Fri, 24 Jun 2011 05:39:33 GMT
  Etag    "8ed02f1-a21-4a66ea04f2f40"
  Accept-Ranges   bytes
  Content-Length  2593
  Keep-Alive  timeout=2, max=99
  Connection  Keep-Alive
  Content-Type    text/css
  </code></pre>