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
Gast #2294183
Lesenswert?
• ▲
▼
Das html ist eine Smarty .tpl Template datei.

Da steht drin:

<img src="bild.png" />

Bevor das aber ausgeliefert wird zeichnet das PHP-Skript bild.png und 
ruft dann

$smarty->display(template.tpl)

als letztes auf, der bildname bleibt statisch
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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.