PHP Caching für eine konkrete Seite abschalten

Gast #2294147
Lesenswert?

Hi,
ich möchte das bei einem Skript bzw. Seite keine Bilder gecached werden 
sondern neu angefordert.

Ich habe das so versucht
1
header("Pragma: no-cache"); 
2
header("Cache-Control: no-store, no-cache, max-age=0, must-revalidate");

Das funktioniert aber nur sporadisch (also mal ja mal nein), gibts da 
eine andere Möglichkeit?

Der Hintergrund ist dass wenn dieses Skript aufgerufen wird ein Bild neu 
gezeichnet wird und der Browser soll das neu gezeichnete Bild laden und 
nicht das alte ausm Cache.
Persönliche Seite #2294160
Lesenswert?

D. I. schrieb:
> Der Hintergrund ist dass wenn dieses Skript aufgerufen wird ein Bild neu
> gezeichnet wird und der Browser soll das neu gezeichnete Bild laden und
> nicht das alte ausm Cache

mach aus:
1
img src = "meinbild.php"
einfach
1
img src = "meinbild.php?test=udhdcndfkfu48"
und lass bei den dem seitenladen test z.B. durch time() einen neuen Wert 
zuweisen. Dann denkt der Browser jedes mal das es sich um eine neues 
Bild handelt.

D. I. schrieb:
> Das funktioniert aber nur sporadisch

Das ist auch nur ein freundlicher Hinweis kein Zwang für den Browser ;)

Valentin Buck schrieb:
> Du musst einen Meta-Tag mit "expires" hinzufügen

Bei einem Bild schwerlich möglich...
Gast #2294172
Lesenswert?

Läubi .. schrieb:
s alte ausm Cache
>
> mach aus:
>
1
img src = "meinbild.php"
> einfach
>
1
img src = "meinbild.php?test=udhdcndfkfu48"
> und lass bei den dem seitenladen test z.B. durch time() einen neuen Wert
> zuweisen. Dann denkt der Browser jedes mal das es sich um eine neues
> Bild handelt.

Also wenn das skript aufgerufen wird zeichnet der eine neue .png und 
diese wird dann im html aufgerufen, funktioniert das da genauso?

einfach
1
myscript.php?rand=blablubb

und im html ist halt dann
1
img src=meinbild.png
Persönliche Seite #2294201
Lesenswert?

Ich würde das Erzeugen des Bildes in einer extra PHP Datei machen (sonst 
kriegst du da eh Probleme, da du so das Bild nur neu zeichnest wenn du 
die HTML Datei neu aufrufst (was besonders bei gleichzeitigem Zugriff 
komische Effekte geben wird).

im Template kannst du dann schreiben:
1
<img src="bild.php?time={$smarty.now}" />

die bild.php sieht dan etwa so aus
1
<?php
2
header("Content-type: image/png");
3
header("Pragma: no-cache"); 
4
header("Cache-Control: no-store, no-cache, max-age=0, must-revalidate");
5

6
$img = imagecreatetruecolor(400, 200);
7
... Auf $img zeichnen ...
8
imagePng($img);
9
imagedestroy($img);
10
?>

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren