|
| Image cache problem Fra : Mads Pedersen |
Dato : 19-06-01 00:41 |
|
Jeg har en funktion som lader brugeren uploade et nyt billede istedet for et
eksisterende billede.
Problemet er at når billedet er uploadet så findes det gamle billede stadig
i en eller anden slags cache - først efter to tryk på browserens refresh
knap skifter billedet.
Hvordan kan jeg tvinge php til at loade billedet fra serveren og ikke fra
cache?
// Mads
| |
Thomas L. Kjeldsen (19-06-2001)
| Kommentar Fra : Thomas L. Kjeldsen |
Dato : 19-06-01 00:49 |
|
In article <B7545E40.222BD%mads@imv.au.dk>, Mads Pedersen wrote:
> Problemet er at når billedet er uploadet så findes det gamle billede stadig
> i en eller anden slags cache - først efter to tryk på browserens refresh
> knap skifter billedet.
Det er sandsynligvis din browser der cacher billedet.
> Hvordan kan jeg tvinge php til at loade billedet fra serveren og ikke fra
> cache?
En skudsikker løsning er at ændring navnet på billedet hver gang det bliver
ændret. Alternativt kan man sende nogle headers der forbyder browsere at cache
billedet, men det er ærgeligt at de ikke får lov at cache billedet de gange
hvor det ikke er blevet ændret.
mvh Thomas
| |
Mads Pedersen (19-06-2001)
| Kommentar Fra : Mads Pedersen |
Dato : 19-06-01 09:44 |
|
in article slrn9it4s4.kp7.tlk@tigerdyr.wheel.dk, Thomas L. Kjeldsen at
tlk@tigerdyr.wheel.dk wrote on 19/06/01 01:49:
>> Hvordan kan jeg tvinge php til at loade billedet fra serveren og ikke fra
>> cache?
>
> En skudsikker løsning er at ændring navnet på billedet hver gang det bliver
> ændret. Alternativt kan man sende nogle headers der forbyder browsere at cache
> billedet, men det er ærgeligt at de ikke får lov at cache billedet de gange
> hvor det ikke er blevet ændret.
Sådan som jeg har skruet programmet sammen vil det være meget upraktisk at
ændre filnavnet hver gang. Er der ikke en måde til at _tømme_ cachen??
Hvor kan jeg finde info om de der headers. Måske kan jeg nøjes med at sende
dem når billedet er ændret?
// Mads
| |
Mads Pedersen (19-06-2001)
| Kommentar Fra : Mads Pedersen |
Dato : 19-06-01 17:54 |
|
in article B754DD69.22397%mads@imv.au.dk, Mads Pedersen at mads@imv.au.dk
wrote on 19/06/01 10:43:
> Hvor kan jeg finde info om de der headers. Måske kan jeg nøjes med at sende
> dem når billedet er ændret?
Hmm... løste problemet med en META-REFRESH, men ikke så elegant!
// Mads | http://www.doubleloop.dk|
--------------------------------------
Site news 04-06-2001: Beautiful indian paintbrushes from Marly Keller are
now on display. Go check them out @ If thine eye offend thee...
http://www.madspedersen.com
| |
Troels Arvin (19-06-2001)
| Kommentar Fra : Troels Arvin |
Dato : 19-06-01 19:05 |
|
On Tue, 19 Jun 2001 18:53:36 +0200, "Mads Pedersen" <mads@imv.au.dk>
wrote:
> Hmm... løste problemet med en META-REFRESH, men ikke så elegant!
Er du nu sikker på, at du virkelig fik 'løst' problemet? META
HTTP-EQUIV="refresh" bør kun virke for den URL, som den er del af, altså
HTML-URLen - og ikke billede-URLen.
--
Greetings from Troels Arvin, Copenhagen, Denmark
| |
Johan (19-06-2001)
| Kommentar Fra : Johan |
Dato : 19-06-01 10:29 |
|
> Jeg har en funktion som lader brugeren uploade et nyt billede istedet for
et
> eksisterende billede.
>
> Problemet er at når billedet er uploadet så findes det gamle billede
stadig
> i en eller anden slags cache - først efter to tryk på browserens refresh
> knap skifter billedet.
>
> Hvordan kan jeg tvinge php til at loade billedet fra serveren og ikke fra
> cache?
Reload med en paramter
$URL = $PHP_SELF."?".time();."=1";
og reload så med $URL... så reloader den alle billederne,. pga. browseren
tror det er en ny side
mvh
Johan
| |
Jonas Delfs (19-06-2001)
| Kommentar Fra : Jonas Delfs |
Dato : 19-06-01 13:13 |
|
"Johan" <tcr480@ofir.dk> skrev i en meddelelse
news:9gn61o$7vq$1@news.inet.tele.dk...
> > Jeg har en funktion som lader brugeren uploade et nyt billede istedet
for
> et
> > eksisterende billede.
> >
> > Problemet er at når billedet er uploadet så findes det gamle billede
> stadig
> > i en eller anden slags cache - først efter to tryk på browserens refresh
> > knap skifter billedet.
> >
> > Hvordan kan jeg tvinge php til at loade billedet fra serveren og ikke
fra
> > cache?
>
> Reload med en paramter
>
> $URL = $PHP_SELF."?".time();."=1";
>
> og reload så med $URL... så reloader den alle billederne,. pga. browseren
> tror det er en ny side
Hmm... det var sq noget at en hjemmebix-løsning. Hvad med at gøre sådan:
header ("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header ("Pragma: no-cache"); file:// HTTP/1.0
--
Mvh. Jonas Delfs, http://delfs.dk
"Rigtige mænd scorer på ICQ" -Christian Jørgensen
| |
Johan (19-06-2001)
| Kommentar Fra : Johan |
Dato : 19-06-01 13:28 |
|
> > $URL = $PHP_SELF."?".time();."=1";
> >
> > og reload så med $URL... så reloader den alle billederne,. pga.
browseren
> > tror det er en ny side
>
> Hmm... det var sq noget at en hjemmebix-løsning. Hvad med at gøre sådan:
>
> header ("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
> header ("Pragma: no-cache"); file:// HTTP/1.0
Elsker hjemmebiks Har et problem med at der engang imellem fjernes nogle
af headerne når der køres gennem proxy osv... eller det er min teori, derfor
lavede jeg hjemmebikset, som endnu ikke er gået galt
mvh
Johan
| |
Christian Iversen (19-06-2001)
| Kommentar Fra : Christian Iversen |
Dato : 19-06-01 15:58 |
|
> > Hmm... det var sq noget at en hjemmebix-løsning. Hvad med at gøre sådan:
> >
> > header ("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
> > header ("Pragma: no-cache"); file:// HTTP/1.0
>
> Elsker hjemmebiks Har et problem med at der engang imellem fjernes
nogle
> af headerne når der køres gennem proxy osv... eller det er min teori,
derfor
> lavede jeg hjemmebikset, som endnu ikke er gået galt
En anden hjemmebiks-version:
Header("Last-Modified: ".time()); // kan ikke lige huske om det hedder
"Last-Modified", og kan heller ikke lige huske om time() er kompatibel med
HTTP-time-information...
Men princippet skulle være godt nok!
--
Regards, Christian Iversen [FIDUSO]
Flawless.Dk: [ http://domains.flawless.dk]
Do you have a (broken?) IBM75GXP Drive?
Please go to [ http://ibm.flawless.dk]
| |
Troels Arvin (19-06-2001)
| Kommentar Fra : Troels Arvin |
Dato : 19-06-01 16:34 |
|
On Tue, 19 Jun 2001 16:58:23 +0200, "Christian Iversen" <iversen@it.dk>
wrote:
> Header("Last-Modified: ".time());
Dårlig idé.
time() giver en integer-værdi. Hvis det skal give nogen som helst form
for mening, så skal tid udsendes i HTTP tidsformat; ellers kan man lige
så godt lade være med at udsende den.
Følgende kan måske være brugbart (ikke testet):
$prevLocale=setlocale('LC_TIME','en_US'); // gemmer aktuelle locale
// setting og skifter til US locale mht. tid.
$oneDay=86400;
$lastmod=gmstrftime('%a, %d %b %Y %T GMT',time()+oneDay);
$expire=gmstrftime('%a, %d %b %Y %T GMT',time()-oneDay);
header("Last-Modified: $lastmod"); // in future
header("Expires: $expire"); // in past
setlocale('LC_TIME',$prevLocale);
--
Greetings from Troels Arvin, Copenhagen, Denmark
| |
Troels Arvin (19-06-2001)
| Kommentar Fra : Troels Arvin |
Dato : 19-06-01 16:37 |
|
Damn. Min newsreader ombrød uheldigt, så pas på med den kode, jeg skrev.
--
Greetings from Troels Arvin, Copenhagen, Denmark
| |
Christian Iversen (19-06-2001)
| Kommentar Fra : Christian Iversen |
Dato : 19-06-01 16:55 |
|
> Damn. Min newsreader ombrød uheldigt, så pas på med den kode, jeg skrev.
Fair nok. Desuden er løsningen med Cache-Control langt bedre
Det skal dog lige bemærkes, at jeg skrev:
"...og kan heller ikke lige huske om time() er kompatibel med
HTTP-time-information... "
--
Regards, Christian Iversen [FIDUSO]
Flawless.Dk: [ http://domains.flawless.dk]
Do you have a (broken?) IBM75GXP Drive?
Please go to [ http://ibm.flawless.dk]
| |
|
|