title: Apache serves old versions of files
body: <p>I am debugging js code on localhost and I need to prevent the caching of files by the browser.  I can't use a timestamp appended to the url because it erases chrome debugger breakpoints.</p>
  
  <p>Usually I don't have to refresh the cache, but everyone in a while I do. It is a large problem because I go searching elsewhere for the bugs. I added this code to apache some time ago:</p>
  
  <pre><code>    &lt;IfModule mod_headers.c&gt;
              Header add Expires "Sun, 19 Nov 1978 05:00:00 GMT"
              Header add Cache-Control "no-store, no-cache, must-revalidate, post-check=0, pre-check=0"
      &lt;/IfModule&gt;
  </code></pre>
  
  <p>Can someone explain why Apache would mistake a file for valid or provide some additions to the configuration code that could fix this once and for all?</p>
  
  <p>Headers using the solution below:</p>
  
  <pre><code>&lt;IfModule mod_expires.c&gt;
    expiresActive On
    ExpiresDefault "access plus 1 seconds"
    ExpiresByType text/html "access plus 1 seconds"
    ExpiresByType text/javascript "access plus 1 seconds"
    ExpiresByType application/x-javascript "access plus 1 seconds"
  &lt;/IfModule&gt;
  
  http://localhost/static/images/%d0%9a%d0%be%d0%bf%d0%b8%d1%8f%20logo_inner.png
  
  GET /static/images/%d0%9a%d0%be%d0%bf%d0%b8%d1%8f%20logo_inner.png HTTP/1.1
  Host: localhost
  User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:16.0) Gecko/20100101 Firefox/16.0
  Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
  Accept-Language: en-US,en;q=0.5
  Accept-Encoding: gzip, deflate
  Connection: keep-alive
  Referer: http://localhost/static/images/
  Cache-Control: max-age=0
  
  HTTP/1.1 200 OK
  Date: Sun, 23 Dec 2012 19:33:20 GMT
  Server: Apache/2.2.22 (Ubuntu)
  Last-Modified: Thu, 28 Jun 2012 17:32:51 GMT
  Etag: "b3c27-f1f-4c38bb88d96c0"
  Accept-Ranges: bytes
  Content-Length: 3871
  Expires: Sun, 19 Nov 1978 05:00:00 GMT
  Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
  Keep-Alive: timeout=15, max=99
  Connection: Keep-Alive
  Content-Type: image/png
  
  
  
  HTTP/1.1 200 OK
  Date: Sun, 23 Dec 2012 19:33:54 GMT
  Server: Apache/2.2.22 (Ubuntu)
  Last-Modified: Thu, 28 Jun 2012 17:32:51 GMT
  Etag: "b3c27-f1f-4c38bb88d96c0"
  Accept-Ranges: bytes
  Content-Length: 3871
  Cache-Control: max-age=1
  Expires: Sun, 23 Dec 2012 19:33:55 GMT
  Keep-Alive: timeout=15, max=100
  Connection: Keep-Alive
  Content-Type: image/png
  
  
  
  
  The second request:
  
  http://localhost/static/images/%d0%9a%d0%be%d0%bf%d0%b8%d1%8f%20logo_inner.png
  
  GET /static/images/%d0%9a%d0%be%d0%bf%d0%b8%d1%8f%20logo_inner.png HTTP/1.1
  Host: localhost
  User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:16.0) Gecko/20100101 Firefox/16.0
  Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
  Accept-Language: en-US,en;q=0.5
  Accept-Encoding: gzip, deflate
  Connection: keep-alive
  Referer: http://localhost/static/images/
  If-Modified-Since: Thu, 28 Jun 2012 17:32:51 GMT
  If-None-Match: "b3c27-f1f-4c38bb88d96c0"
  Cache-Control: max-age=0
  
  HTTP/1.1 304 Not Modified
  Date: Sun, 23 Dec 2012 19:34:58 GMT
  Server: Apache/2.2.22 (Ubuntu)
  Connection: Keep-Alive
  Keep-Alive: timeout=15, max=99
  Etag: "b3c27-f1f-4c38bb88d96c0"
  Expires: Sun, 23 Dec 2012 19:34:59 GMT
  Cache-Control: max-age=1
  </code></pre>