Is it possible to stop an image from being cached?

This is a discussion on Is it possible to stop an image from being cached? within the PHP General forums, part of the PHP Programming Forums category; I have a situation where there is a single image let's call it somebody.jpg. I want to be ...


Go Back   Usenet Forums > PHP Programming Forums > PHP General

FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 07-26-2007
Dan
 
Posts: n/a
Default Is it possible to stop an image from being cached?

I have a situation where there is a single image let's call it somebody.jpg.
I want to be able to dynamicly create this image using php, basicilly I have
PHP set to handle .jpg files also, so I then go through and create an image
based upon some info I get from a database call and then use
header('Content-Type: image/jpeg');
passthru($file);
to send the image to the user.

My problem is once they view the image their browser "helpfully" caches it
so they don't have to download it again.

Is there any tactic short of changing the name constantly of the image to
avoid browser caching of an image?

- Dan
Reply With Quote
  #2 (permalink)  
Old 07-26-2007
Tijnema
 
Posts: n/a
Default Re: [PHP] Is it possible to stop an image from being cached?

On 7/26/07, Dan <frozendice@gmail.com> wrote:
> I have a situation where there is a single image let's call it somebody.jpg.
> I want to be able to dynamicly create this image using php, basicilly I have
> PHP set to handle .jpg files also, so I then go through and create an image
> based upon some info I get from a database call and then use
> header('Content-Type: image/jpeg');
> passthru($file);
> to send the image to the user.
>
> My problem is once they view the image their browser "helpfully" caches it
> so they don't have to download it again.
>
> Is there any tactic short of changing the name constantly of the image to
> avoid browser caching of an image?
>
> - Dan


Solution 1:
Send a header() that avoids caching (can't remember it exactly)
Solution 2:
Call the image like this:
<img src="image.jpg?arandomstringhereeachtime">
Or if you were creating it with a php script:
<img src="image.php?img=image.jpg&arandomstringhereeach time">

Tijnema

--
Vote for PHP Color Coding in Gmail! -> http://gpcc.tijnema.info
Reply With Quote
  #3 (permalink)  
Old 07-26-2007
Chris Aitken
 
Posts: n/a
Default RE: [PHP] Is it possible to stop an image from being cached?

> Solution 1:
> Send a header() that avoids caching (can't remember it exactly)
> Solution 2:
> Call the image like this:
> <img src="image.jpg?arandomstringhereeachtime">
> Or if you were creating it with a php script:
> <img src="image.php?img=image.jpg&arandomstringhereeach time">


My preferred way of doing it, and making sure its reloaded each time is to
do it this way... the U variable pretty much guarantees a random string each
time its loaded.

image.jpg?".date("U")."




Regards


Chris Aitken
The Web Hub Designer and Programmer
Phone : 02 4648 0808
Mobile : 0411 132 075

-------------------------------------------------

Making The Web Work........ The Web Hub
http://www.thewebhub.com.au/
chris@thewebhub.com.au

-------------------------------------------------

Confidentiality Statement:
This message is intended only for the use of the Addressee and may contain
information that is PRIVILEDGED and CONFIDENTIAL. If you are not the
intended recipient, dissemination of this communication is prohibited.
If you have received this communication in error, please erase all
copies of the message and its attachments and notify us immediately.
Reply With Quote
  #4 (permalink)  
Old 07-26-2007
brian
 
Posts: n/a
Default Re: [PHP] Is it possible to stop an image from being cached?

Tijnema wrote:
> On 7/26/07, Dan <frozendice@gmail.com> wrote:
>
>> I have a situation where there is a single image let's call it
>> somebody.jpg.
>> I want to be able to dynamicly create this image using php, basicilly
>> I have
>> PHP set to handle .jpg files also, so I then go through and create an
>> image
>> based upon some info I get from a database call and then use
>> header('Content-Type: image/jpeg');
>> passthru($file);
>> to send the image to the user.
>>
>> My problem is once they view the image their browser "helpfully"
>> caches it
>> so they don't have to download it again.
>>
>> Is there any tactic short of changing the name constantly of the image to
>> avoid browser caching of an image?
>>
>> - Dan

>
>
> Solution 1:
> Send a header() that avoids caching (can't remember it exactly)


You can try:

header('Cache-Control: no-store, no-cache, must-revalidate,
Post-Check=0, Pre-Check=0');

brian
Reply With Quote
  #5 (permalink)  
Old 07-26-2007
Tijnema
 
Posts: n/a
Default Re: [PHP] Is it possible to stop an image from being cached?

On 7/27/07, brian <phplist@subtropolix.org> wrote:
> Tijnema wrote:
> > On 7/26/07, Dan <frozendice@gmail.com> wrote:
> >
> >> I have a situation where there is a single image let's call it
> >> somebody.jpg.
> >> I want to be able to dynamicly create this image using php, basicilly
> >> I have
> >> PHP set to handle .jpg files also, so I then go through and create an
> >> image
> >> based upon some info I get from a database call and then use
> >> header('Content-Type: image/jpeg');
> >> passthru($file);
> >> to send the image to the user.
> >>
> >> My problem is once they view the image their browser "helpfully"
> >> caches it
> >> so they don't have to download it again.
> >>
> >> Is there any tactic short of changing the name constantly of the image to
> >> avoid browser caching of an image?
> >>
> >> - Dan

> >
> >
> > Solution 1:
> > Send a header() that avoids caching (can't remember it exactly)

>
> You can try:
>
> header('Cache-Control: no-store, no-cache, must-revalidate,
> Post-Check=0, Pre-Check=0');
>
> brian


That's HTTP/1.1 only, but this is what I got from PHP site:
<?php
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
?>

Tijnema

--
Vote for PHP Color Coding in Gmail! -> http://gpcc.tijnema.info
Reply With Quote
  #6 (permalink)  
Old 07-26-2007
Chris Aitken
 
Posts: n/a
Default RE: [PHP] Is it possible to stop an image from being cached?

>> header('Cache-Control: no-store, no-cache, must-revalidate,
>> Post-Check=0, Pre-Check=0');
>>
>> brian

>
>That's HTTP/1.1 only, but this is what I got from PHP site:
><?php
>header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
>header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
>?>
>


But wouldn't that make every image on the page be uncached and reloaded each
time? Not very efficient if the shell of the site keeps getting loaded if
only 1 or 2 images need to be forced.




Regards


Chris Aitken
The Web Hub Designer and Programmer
Phone : 02 4648 0808
Mobile : 0411 132 075

-------------------------------------------------

Making The Web Work........ The Web Hub
http://www.thewebhub.com.au/
chris@thewebhub.com.au

-------------------------------------------------

Confidentiality Statement:
This message is intended only for the use of the Addressee and may contain
information that is PRIVILEDGED and CONFIDENTIAL. If you are not the
intended recipient, dissemination of this communication is prohibited.
If you have received this communication in error, please erase all
copies of the message and its attachments and notify us immediately.
Reply With Quote
  #7 (permalink)  
Old 07-27-2007
Tijnema
 
Posts: n/a
Default Re: [PHP] Is it possible to stop an image from being cached?

On 7/27/07, Chris Aitken <chris@thewebhub.com.au> wrote:
> >> header('Cache-Control: no-store, no-cache, must-revalidate,
> >> Post-Check=0, Pre-Check=0');
> >>
> >> brian

> >
> >That's HTTP/1.1 only, but this is what I got from PHP site:
> ><?php
> >header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
> >header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
> >?>
> >

>
> But wouldn't that make every image on the page be uncached and reloaded each
> time? Not very efficient if the shell of the site keeps getting loaded if
> only 1 or 2 images need to be forced.
>
>
>
>
> Regards
>
>
> Chris Aitken
> The Web Hub Designer and Programmer
> Phone : 02 4648 0808
> Mobile : 0411 132 075
>


Yes, that depends on which way it is used, I wouldn't recommend
loading images from the database that don't get changed...
And you can of course also use an
if-statement/switch-statement/in_array function in your image.php
script, like this:

$img = $_GET['img'];
if($img == "test_a.jpg" || $img == "test_b.jpg") {
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
}

OR:

$img = $_GET['img'];
switch($img) {
case "test_a.jpg":
case "test_b.jpg":
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
}

OR:

$img = $_GET['img'];
$noncached_images = array("test_a.jpg","test_b.jpg");
if(in_array($img,$noncached_images)) {
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
}



Tijnema

--
Vote for PHP Color Coding in Gmail! -> http://gpcc.tijnema.info
Reply With Quote
  #8 (permalink)  
Old 07-27-2007
Dan
 
Posts: n/a
Default Re: [PHP] Is it possible to stop an image from being cached?

Is this header you're refering to the header of the page which contains the
image, or the image itself?

- Dan

"Tijnema" <tijnema@gmail.com> wrote in message
news:d8269d910707261527o7ac08edap61802a712fbac7da@ mail.gmail.com...
> On 7/27/07, brian <phplist@subtropolix.org> wrote:
>> Tijnema wrote:
>> > On 7/26/07, Dan <frozendice@gmail.com> wrote:
>> >
>> >> I have a situation where there is a single image let's call it
>> >> somebody.jpg.
>> >> I want to be able to dynamicly create this image using php, basicilly
>> >> I have
>> >> PHP set to handle .jpg files also, so I then go through and create an
>> >> image
>> >> based upon some info I get from a database call and then use
>> >> header('Content-Type: image/jpeg');
>> >> passthru($file);
>> >> to send the image to the user.
>> >>
>> >> My problem is once they view the image their browser "helpfully"
>> >> caches it
>> >> so they don't have to download it again.
>> >>
>> >> Is there any tactic short of changing the name constantly of the image
>> >> to
>> >> avoid browser caching of an image?
>> >>
>> >> - Dan
>> >
>> >
>> > Solution 1:
>> > Send a header() that avoids caching (can't remember it exactly)

>>
>> You can try:
>>
>> header('Cache-Control: no-store, no-cache, must-revalidate,
>> Post-Check=0, Pre-Check=0');
>>
>> brian

>
> That's HTTP/1.1 only, but this is what I got from PHP site:
> <?php
> header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
> header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
> ?>
>
> Tijnema
>
> --
> Vote for PHP Color Coding in Gmail! -> http://gpcc.tijnema.info

Reply With Quote
  #9 (permalink)  
Old 07-27-2007
Tijnema
 
Posts: n/a
Default Re: [PHP] Is it possible to stop an image from being cached?

On 7/27/07, Dan <frozendice@gmail.com> wrote:
> Is this header you're refering to the header of the page which contains the
> image, or the image itself?
>
> - Dan


The image itself.

Also note, that if you use my solution 2, you still might get
problems, as the page that is calling might be cached, and in the
cached page, it refers to the image with the same unique code, and it
will use the cached image again.

Also, if you use solution 2, the image will still stay forever in the
temp folder of the browser(unless the user is cleaning it). If you use
solution 1, the browser will keep it only for this page, and will
remove it afterwards.

Tijnema
>
> "Tijnema" <tijnema@gmail.com> wrote in message
> news:d8269d910707261527o7ac08edap61802a712fbac7da@ mail.gmail.com...
> > On 7/27/07, brian <phplist@subtropolix.org> wrote:
> >> Tijnema wrote:
> >> > On 7/26/07, Dan <frozendice@gmail.com> wrote:
> >> >
> >> >> I have a situation where there is a single image let's call it
> >> >> somebody.jpg.
> >> >> I want to be able to dynamicly create this image using php, basicilly
> >> >> I have
> >> >> PHP set to handle .jpg files also, so I then go through and create an
> >> >> image
> >> >> based upon some info I get from a database call and then use
> >> >> header('Content-Type: image/jpeg');
> >> >> passthru($file);
> >> >> to send the image to the user.
> >> >>
> >> >> My problem is once they view the image their browser "helpfully"
> >> >> caches it
> >> >> so they don't have to download it again.
> >> >>
> >> >> Is there any tactic short of changing the name constantly of the image
> >> >> to
> >> >> avoid browser caching of an image?
> >> >>
> >> >> - Dan
> >> >
> >> >
> >> > Solution 1:
> >> > Send a header() that avoids caching (can't remember it exactly)
> >>
> >> You can try:
> >>
> >> header('Cache-Control: no-store, no-cache, must-revalidate,
> >> Post-Check=0, Pre-Check=0');
> >>
> >> brian

> >
> > That's HTTP/1.1 only, but this is what I got from PHP site:
> > <?php
> > header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
> > header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
> > ?>
> >
> > Tijnema
> >
> > --
> > Vote for PHP Color Coding in Gmail! -> http://gpcc.tijnema.info

>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>



--
Vote for PHP Color Coding in Gmail! -> http://gpcc.tijnema.info
Reply With Quote
  #10 (permalink)  
Old 07-27-2007
Dan
 
Posts: n/a
Default Re: [PHP] Is it possible to stop an image from being cached?

Well, this is only one specific image that constantly changes, the rest of
the page is handled regularly.
From what you've said if I go with this
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past

That will effect only the one specific image I use this on when generating
it right?

- Dan

"Tijnema" <tijnema@gmail.com> wrote in message
news:d8269d910707261632k2d649476l102453e93eabf34d@ mail.gmail.com...
> On 7/27/07, Dan <frozendice@gmail.com> wrote:
>> Is this header you're refering to the header of the page which contains
>> the
>> image, or the image itself?
>>
>> - Dan

>
> The image itself.
>
> Also note, that if you use my solution 2, you still might get
> problems, as the page that is calling might be cached, and in the
> cached page, it refers to the image with the same unique code, and it
> will use the cached image again.
>
> Also, if you use solution 2, the image will still stay forever in the
> temp folder of the browser(unless the user is cleaning it). If you use
> solution 1, the browser will keep it only for this page, and will
> remove it afterwards.
>
> Tijnema
>>
>> "Tijnema" <tijnema@gmail.com> wrote in message
>> news:d8269d910707261527o7ac08edap61802a712fbac7da@ mail.gmail.com...
>> > On 7/27/07, brian <phplist@subtropolix.org> wrote:
>> >> Tijnema wrote:
>> >> > On 7/26/07, Dan <frozendice@gmail.com> wrote:
>> >> >
>> >> >> I have a situation where there is a single image let's call it
>> >> >> somebody.jpg.
>> >> >> I want to be able to dynamicly create this image using php,
>> >> >> basicilly
>> >> >> I have
>> >> >> PHP set to handle .jpg files also, so I then go through and create
>> >> >> an
>> >> >> image
>> >> >> based upon some info I get from a database call and then use
>> >> >> header('Content-Type: image/jpeg');
>> >> >> passthru($file);
>> >> >> to send the image to the user.
>> >> >>
>> >> >> My problem is once they view the image their browser "helpfully"
>> >> >> caches it
>> >> >> so they don't have to download it again.
>> >> >>
>> >> >> Is there any tactic short of changing the name constantly of the
>> >> >> image
>> >> >> to
>> >> >> avoid browser caching of an image?
>> >> >>
>> >> >> - Dan
>> >> >
>> >> >
>> >> > Solution 1:
>> >> > Send a header() that avoids caching (can't remember it exactly)
>> >>
>> >> You can try:
>> >>
>> >> header('Cache-Control: no-store, no-cache, must-revalidate,
>> >> Post-Check=0, Pre-Check=0');
>> >>
>> >> brian
>> >
>> > That's HTTP/1.1 only, but this is what I got from PHP site:
>> > <?php
>> > header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
>> > header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
>> > ?>
>> >
>> > Tijnema
>> >
>> > --
>> > Vote for PHP Color Coding in Gmail! -> http://gpcc.tijnema.info

>>
>> --
>> PHP General Mailing List (http://www.php.net/)
>> To unsubscribe, visit: http://www.php.net/unsub.php
>>
>>

>
>
> --
> Vote for PHP Color Coding in Gmail! -> http://gpcc.tijnema.info

Reply With Quote
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are Off
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



All times are GMT +1. The time now is 02:23 PM.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.0.0