This is a discussion on php gd prevent caching within the alt.comp.lang.php forums, part of the PHP Programming Forums category; Hi I want to stop a gd generated image from being cached. It is called into index.php file as ...
|
|||||||
| FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
|
|||
|
Hi
I want to stop a gd generated image from being cached. It is called into index.php file as follows: <image src = "http://www.daveches.co.uk/importimage/importimage.php?x=$randomNumber" alt = "battle area" usemap="#battlegrid" border="0"> (importimage4real.php contains the gd functionality that load and modify the image). The random number querystring in the code above is an attempt to trick the browser into thinking the image is different from what it has in its cache. But still it displays its cached version of the image. I have tried every "stop caching" header I can think of in both index.php and importimage.php, set expires to a time in the past and all the rest. Still, refresh the browser: you get the cached, not the latest, image (same in ie6 and Firefox). After a few minutes something expires and you do get the latest version by Refreshing, but this is no good for my application. Is it possible that some settings on my hosting company's server are overwriting any changes I can make? dave Cheseldine |
|
|||
|
dave,
> I have tried every "stop caching" header I can think of in both > index.php and importimage.php, set expires to a time in the past and all > the rest. Still, refresh the browser: you get the cached, not the > latest, image (same in ie6 and Firefox). After a few minutes something > expires and you do get the latest version by Refreshing, but this is no > good for my application. Are you sure you are using all of the correct headers? header('Pragma: no-cache'); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Cache-Control: private",false); header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); Mike |
|
|||
|
And also, dont use the same expiry/modified on each load:
// Expire the image 1 year before it's being viewed, and make it modified 2 minutes ago header("Last-Modified: " . date(DATE_RFC822, time() - 120)); header("Expires: " . date(DATE_RFC822, time() - (3600 * 24 * 365))); It's trivial and minor, but you never know. One final option: Use a bit of javascript onload to refresh the image on the client side. "Mike Willbanks" <pencap@gmail.com> wrote in message news:tduhf.729$DW6.59@fe03.lga... > dave, > > > I have tried every "stop caching" header I can think of in both > > index.php and importimage.php, set expires to a time in the past and all > > the rest. Still, refresh the browser: you get the cached, not the > > latest, image (same in ie6 and Firefox). After a few minutes something > > expires and you do get the latest version by Refreshing, but this is no > > good for my application. > > Are you sure you are using all of the correct headers? > > header('Pragma: no-cache'); > header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); > header("Cache-Control: private",false); > header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); > > Mike |