tags:

views:

65

answers:

5

Hi All,

I'm writing a php script to crop an image. The script overwrites the 'old' image with the 'new' one, but when I reload the page (which is supposed to pickup the new image) I still see the old one.

If i check my hard disk (i'm working on local machine) i can see that the image HAS changed, but the HTML doesn't pick it up. Maybe it's a caching problem? How can I solve it?

thanks, Patrick

+2  A: 

If you're sure your HTML is pointing at the right file; Ctrl+F5?

Steve
yes, pointing to correct file. I've cheched the page source; Also, reloading shows the new image
patrick
A: 

Are you sending the proper headers to prevent the browser from caching the image?

E.g.: http://www.badpenguin.org/php-howto-control-page-caching

Palantir
Some ISPs using squid or other caching proxies flat out ignore that. My back up provider falls into that epoch fail crowd, which is why I still cringe when my primary connection goes out.
Tim Post
Yes, that's possible, but if I'd first check out the most common issues with caching, and only then revert to this kind of ISP practices.
Palantir
A: 

It could be that your ISP is using a caching proxy. Check the URL with BrowserShots to see if this is indeed the case. My back-up DSL is from a provider that does this to save bandwidth, its highly annoying. They also ignore every header telling them NOT to do it.

Tim Post
+4  A: 

A common technique for ensuring images are never cached is to add the current time in miliseconds to the end of the image's url as a parameter. Your web server will ignore the parameter and serve the same image every time, but your browser (and any intermediate cache) will register a cache miss because the url for the image is different.

<a href='/images/someimage.png?d= <?php echo(date("U")); ?> '>
Ryan Michela
+1  A: 

Try to add a timestamp to the URL. This prevents most browsers from caching the images. Example: http://localhost/test.jpg?1257783872

Edit: Oh, Ryan has already given a similar answer. Sorry.