On 29 Apr 2001 07:19:15 -0700, Steve Haemelinck <[EMAIL PROTECTED]> wrote:
> I thought this was because the page might be cached, but when I set the
> header("cache-control: no-cache") & the meta tag http-equiv="Expires"
> content="-1" it still produces the same effect. How can I solve this
> problem?
Have you tried with the other HTTP headers for expiration? This is floating
around various places - the PHP manual, etc.
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); //always modified
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Pragma: no-cache"); // HTTP/1.0
If that doesn't work (IE/NS can be really buggy with caching - I once had a
problem where a page started returning a 500 error code and IE5 continued to
display the old version of that page, even though I had set the cache to check
every time), some alternatives come to mind:
- Embed some random variable in the URL. I think this is the cleanest way of
dealing with browsers which ignore the HTTP headers - simply start encoding
the session ID in your links or even something like "&DontCacheThisPage=" .
time(). If the URLs are different, the browser won't cache them, which should
sidestep the issue.
If for some reason you can't do that and don't mind kludgy looking code:
- Use POST. It's ugly and nasty but the browsers are better about always
reloading pages which are the response to a POST request.
- Equally ugly, use JavaScript. When you change a document's location,
there's a parameter which if true will cause the browser to reload the page
even if it's cached. The least ugly way of doing this would be to write a
function and put it in a handler ('OnClick="return forceLoad('myurl');"') so
that poeople w/o JS will still be able to use your pages.
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]