/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
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]



Søg
Reklame
Statistik
Spørgsmål : 177523
Tips : 31968
Nyheder : 719565
Indlæg : 6408674
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste