ich den nächsten Code bin mit meinen Bilder zu machen:Rendered Bild php langsamen Laden in Chrom
// 1. Check if image exists
$image = glob("public/images/$category/$id/$name.*");
// Image exists
if(count($image) === 1) {
// 2. Get file extension
$path_parts = pathinfo($image[0]);
// 3. Add the content type to the header
switch(strtolower($path_parts['extension']))
{
case "gif":
header("Content-type: image/gif");
break;
case "jpg":
case "jpeg":
header("Content-type: image/jpeg");
break;
case "png":
header("Content-type: image/png");
break;
case "bmp":
header("Content-type: image/bmp");
break;
case "svg":
header("Content-type: image/svg+xml");
break;
default:
self::setNotFoundHeaders();
break;
}
// 4. Set the rest of the Header information
header("Expires: Mon, 1 Jan 2099 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
// 5. Get the size for content length
$size= filesize($image[0]);
header("Content-Length: $size bytes");
// 6. Output the file contents
readfile($image[0]);
}
das Bild lädt perfekt in IE, Chrome und Firefox, aber während es 100 ms dauert in IE und Firefox laden dauert das Laden in Chrome 5 Sekunden. Dies ist, was der Netzwerk-Chrome-Tab wie folgt aussieht:
Auch wenn es 5 Sekunden dauert geladen ist, wird das Bild ist fertig und sichtbar mit normaler Geschwindigkeit, in etwa 100 ms.
Auch Sie können in dem Bild sehen, dass der Dateityp "Dokument" und nicht "Bild" ist, IDK warum.
Ich habe verschiedene Code versucht, mit dem Bild zu machen, aber ich habe das gleiche Verhalten:
$fp = fopen($image[0], 'rb');
fpassthru($fp);
Was mache ich falsch? Fehle ich einige Überschriften?
Vielen Dank für Ihre Zeit!
Danke @paolo! 'while (ob_get_level()> 0) {ob_end_flush(); } 'Hat den Trick gemacht. Während ich auf eine Antwort wartete, versuchte ich die Dinge, dieser Header stoppt auch die Ladung, nachdem das Bild angezeigt wird: 'header (" Verbindung: Schließen "), aber in der Dokumentation heißt es, dass Nachrichtenköpfe, die im Connection-Header aufgelistet sind, NICHT Include End-to-End-Header, wie Cache-Control. Also möglicherweise Konflikte mit den Cache-Steuerheader, die ich benutze, IDK ... Sollte ich die Puffer leeren oder den vorherigen Header hinzufügen? Nochmals vielen Dank für Ihre Zeit –
spülen Sie einfach die Puffer und beenden Sie() – Paolo