Issue with cache and pictures

Do you have a question? Post it now! No Registration Necessary.  Now with pictures!

Threaded View
I have a problem with cached images...

The script first creates some pictures out of avariable source (every time  
the script runs the pics are different):

$im = imagecreatefromjpeg($file);

then I show them using normal html img tags

<img src="temp100.jpg">

The problem is that the pictures are cached and the script/IE shows a  
fautlhy version of the pictures.

I tried messing with the header as described in the php manual.

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");

But this doesn't work...  wrong pic-fileversion

Does anybody has a sollution?


Re: Issue with cache and pictures

Jaak said the following on 02/01/2006 16:00:
Quoted text here. Click to load it

This is a really bad way of implementing dynamically-generated images.  
If more than one user is using your site, then you will get naming  
collisions, files overwriting each other, users getting each other's  
images, etc.

Much better to have an image-generating script (called, for example,  
image.php), e.g.:


    header("Content-Type: image/jpeg");
    /* ... cache-control headers here ... */

    /* ... need validation of $_GET fields here ... */
    $im = imagecreatefromjpeg($_GET["file"]);
    imagejpeg($im, '', $_GET["quality"];


Then in your HTML, you can call it thus:

<IMG src="image.php?file=file.jpg&amp;quality=50">

Quoted text here. Click to load it

Where are you putting these headers?

Headers sent with the HTML affect *only* the HTML file, not any embedded  
resources (i.e. images).

The solution is to send the appropriate headers with the image files, as  
is possible with the image.php implementation above.


Site Timeline