/ Forside / Teknologi / Internet / Browser / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Browser
#NavnPoint
Klaudi 20366
molokyle 12124
o.v.n. 8114
miritdk 4839
stl_s 3840
refi 3598
dk 2598
arlet 2470
tedd 2383
10  webnoob 2075
problemer med caching af billeder i firefo~
Fra : ask


Dato : 21-02-06 13:43

Hej

Håber I kan hjælpe. Jeg er ved at lave en hjemmeside hvor der skal
vises nogle bestemte billeder. Url'en til billederne skal altid være
den samme selvom billederne ændrer sig, dvs. for at vise et nyt
billede skal billedet f.eks. overskrives med et nyt. For at gøre
setuppet dynamisk tænker jeg at url'en til billedet bliver en php-fil
der så redirecter til det faktiske billede. Flg. kode beskriver
processen:

================ html
<html><head>
<meta http-equiv="expires" content="0">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="cache-control" content="no-store">
</head><body>
.... <img src='billede.php' /> ...
</body></html>

================ billede.php
<?php
include ( ... db connection ... ):
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Expires: Mon, 01 Jan 2000 01:00:00 GMT");

if(0<mysql_num_rows($res=mysql_query ("SELECT path_file FROM table")))
{
   list ( $path_file ) = mysql_fetch_row( $res ));
   if ( $path_file )
      header ( "LOCATION: $path_file" ); // send browser to image
   else
      header ( "LOCATION: www.here.com/noimg.gif");
}
?>

Men lige meget hvad jeg skriver af koder for at undgå caching virker
det ikke overbevisende i firefox. IE klarer det fint og når jeg
udskriver $path_file findes det korrekte billede. Grunden til at url'en
til billedet helst ikke skal ændres er, at systemet håndterer
billeder på andres hjemmesider - således at de ikke skal tænke over
noget, jeg sørger for at de korrekte billeder vises.

Håber I kan fortælle mig at jeg har overset noget indlysende. Findes
der f.eks. nogle firefox-specifikke måder at styre caching på
(ligesom der findes firefox-specifikke css-styles)?

Takker - Ask


 
 
Frederik Sunne (21-02-2006)
Kommentar
Fra : Frederik Sunne


Dato : 21-02-06 15:17

Min måde at omgå der er ved at have et script som hedder:
showImage.php:

$file = rawurldecode($_GET['file']);
header( "Content-type: image/jpeg" );
@readfile( $file );

som altså er et php script som viser et jpeg billede.
image source i HTML filen hedder så noget lignende:

$TMP = rawurlencode('./minfil.jpg');

'showImage.php?file='.$TMP.'&dummy='.time().rand(0,99);

Dummy parametren er udelukkende for snyde FF til at tro
at der er tale om en unik fil, som skal downloades hver gang.

Mvh,

Frederik

ask wrote:
> Hej
>
> Håber I kan hjælpe. Jeg er ved at lave en hjemmeside hvor der skal
> vises nogle bestemte billeder. Url'en til billederne skal altid være
> den samme selvom billederne ændrer sig, dvs. for at vise et nyt
> billede skal billedet f.eks. overskrives med et nyt. For at gøre
> setuppet dynamisk tænker jeg at url'en til billedet bliver en php-fil
> der så redirecter til det faktiske billede. Flg. kode beskriver
> processen:
>
> ================ html
> <html><head>
> <meta http-equiv="expires" content="0">
> <meta http-equiv="pragma" content="no-cache">
> <meta http-equiv="cache-control" content="no-cache">
> <meta http-equiv="cache-control" content="no-store">
> </head><body>
> ... <img src='billede.php' /> ...
> </body></html>
>
> ================ billede.php
> <?php
> include ( ... db connection ... ):
> header("Cache-Control: no-store, no-cache, must-revalidate");
> header("Expires: Mon, 01 Jan 2000 01:00:00 GMT");
>
> if(0<mysql_num_rows($res=mysql_query ("SELECT path_file FROM table")))
> {
>    list ( $path_file ) = mysql_fetch_row( $res ));
>    if ( $path_file )
>       header ( "LOCATION: $path_file" ); // send browser to image
>    else
>       header ( "LOCATION: www.here.com/noimg.gif");
> }
> ?>
>
> Men lige meget hvad jeg skriver af koder for at undgå caching virker
> det ikke overbevisende i firefox. IE klarer det fint og når jeg
> udskriver $path_file findes det korrekte billede. Grunden til at url'en
> til billedet helst ikke skal ændres er, at systemet håndterer
> billeder på andres hjemmesider - således at de ikke skal tænke over
> noget, jeg sørger for at de korrekte billeder vises.
>
> Håber I kan fortælle mig at jeg har overset noget indlysende. Findes
> der f.eks. nogle firefox-specifikke måder at styre caching på
> (ligesom der findes firefox-specifikke css-styles)?
>
> Takker - Ask
>

ask (21-02-2006)
Kommentar
Fra : ask


Dato : 21-02-06 15:41

Hej og tak for svaret.

Du har helt ret, man kan godt snyde ff til at hente billedet og det
gør jeg også. Men da det er et hack vil jeg helst undgå denne
metode.

Mht. at bruge readfile(...) har jeg fundet ud af, at den er mere
krævende end hvis man kan henvise direkte til billedet. Så for at
sikre minimalt pres på serveren ville jeg også gerne udgå denne
metode...

Håber du har flere gode ideer :)


Søg
Reklame
Statistik
Spørgsmål : 177557
Tips : 31968
Nyheder : 719565
Indlæg : 6408868
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste