For a small intranet site, I have a dynamic (includes AJAX) page that is being cached incorrectly by Firefox. Is there a way to disable browser caching for a single page?
Here's the setup I'm using:
- Apache under XAMPP, running on a Windows server
- PHP
Clarification
The content that I'm primarily concerned about is page text and the default options in some <select>
s. So I can't just add random numbers to the end of some image URLs, for example.
Update:
I followed the suggestions I've gotten so far:
- I'm sending nocache headers (see below)
I'm including a timestamp URL parameter and redirecting to a new one if the page is reloaded after 2 seconds, like this:
$timestamp = $_GET['timestamp']; if ((time()-$timestamp) > 2) { header('Location:/intranet/admin/manage_skus.php?timestamp='.time()); }
Now Firebug shows that the headers specify no cache, but the problem persists. Here are the response headers for the page:
Date Fri, 25 Sep 2009 20:41:43 GMT
Server Apache/2.2.11 (Win32) DAV/2 mod_ssl/2.2.11 OpenSSL/0.9.8i mod_autoindex_color PHP/5.2.8
X-Powered-By PHP/5.2.8
Expires Mon, 20 Dec 1998 01:00:00 GMT
Last-Modified Fri, 25 Sep 2009 20:41:43 GMT
Cache-Control no-cache, must-revalidate
Pragma no-cache
Keep-Alive timeout=5, max=100
Connection Keep-Alive
Transfer-Encoding chunked
Content-Type text/html
Use the header() function. You have to set a few to cover all browsers; see http://www.php.net/manual/en/function.header.php#75507
I think this tells you what you want:
http://www.thesitewizard.com/archive/phptutorial2.shtml
Look for "Preventing the Browser From Caching"
Here's another take that isn't PHP specific.
Try this in your
<head> </head>
section:Found that at the end of a long thread here:
http://forums.mozillazine.org/viewtopic.php?f=25&t=673135&start=75
You could add these headers:
And (for backward compatibility with HTTP/1.0 clients)
You should send the following header:
in the HTTP response.
Add current timestamp as parameter of url, e.g.