Ich habe ein PHP-Skript, das * .png Bilder erzeugt, aber nicht speichert sie auf dem Server. Diese Bilder werden wiederholt demselben Benutzer angezeigt. Ich suche nach einem Weg zu Cache diese Bilder. Ich bin in der Lage, den 304-Status-Header zu senden, der Browser deklariert auch die Webseite als zwischengespeichert bei der ersten Aktualisierung (wie es im Web-Inspector sichtbar ist), aber die Webseite wird leer angezeigt. Nach einer zweiten Aktualisierung zeigt auch der Web-Inspektor nichts.Wie können dynamisch erstellte Bilder zwischengespeichert werden?
Kann mir jemand helfen und sagen, wo ich versagt habe?
Hinweise:
- Ich habe this post gelesen, aber es hat mir nicht geholfen.
- Verwendung von MAMP (PHP Version 7.0.10)
- Ich bin ein Neuling, ich entschuldige mich für den hässlichen Code.
Hier sind die wichtigsten Linien der Datei:
session_start();
header("Content-type: image/jpeg");
//A little require_once() here on some functions stored in an other file.
$originalSource = getSource($_GET['src']);
if (isset($_COOKIE[sha1($originalSource)]) && $_COOKIE[sha1($originalSource)]) {
header("HTTP/1.1 304 Not Modified");
die;
} else {
setcookie (sha1($originalSource), true, time()+10);
$offset = 10;
$expire = "Expires: " . gmdate("D, d M Y H:i:s", time() + $offset) . " GMT";
header($expire);
header("Cache-Control: max-age=".$offset);
header("Last-Modified: Wed, 25 Feb 2015 12:00:00 GMT");
}
//The entire image generation process after this
Danke für Ihre Hilfe
Danke @deceze! Also sieht mein Code jetzt wie folgt aus (http://pastebin.com/7NwDTerH). Es wird jedoch immer noch nicht zwischengespeichert. [Diese] (http://pastebin.com/W9812psa) sind die Header, die ich bekomme. 1. Muss ich "APC" oder "OPCache" auf MAMP aktivieren? 2. Benötige ich den 'session_start();'? 3. Ist es möglich, dass 'Pragma = no-cache' das Problem verursacht? Sorry für die große Menge an Fragen. – Faegy
APC usw. hat nichts mit dieser Art von Cache zu tun. Und ja, 'Pragma no-cache' scheint hier kontraproduktiv. – deceze
Beachten Sie auch, dass Ihr "Date" und "Expires" identisch sind, was bedeutet, dass es sofort abläuft. – deceze