Zum Inhalt springen

[PHP] Gd-Lib Bilder Caching


Empfohlene Beiträge

Hallo zusammen,

ich habe eine Seite, in der ich via PHP Bilder generiere.

Mir kommt es so vor, als würden die Browser diese generierten Bilder nicht cachen...

Kann ich das irgendwie kontrollieren?

Muss ich evtl irgendeinen bestimmten Header senden, damit der Browser das ganze cached?

Gruß,

Markus

Link zu diesem Kommentar
Auf anderen Seiten teilen

GD generiert images on-the-fly - das lässt sich aber z.b. umgehen, indem bilder bei vorhandensein aus einem verzeichnis geladen werden, andernfalls zuerst generiert und dann im cache abgelegt werden:

<?php
// set the PNG header type for the request
header("Content-Type: image/png");

// see if a width and height for the image have been provided in GET VARS
// if not, use some defaults
if ($_GET["logo_width"]){
$width = $_GET["logo_width"];
$height = $_GET["logo_height"];
}else{
$width = 466;
$height = 100;
}

// now check if an image created for of these dimensions
// is in the image cache
// if not, then we will have to make a new one

$image_path = "../image-cache/logo_".$width."x".$height.".png";

if (file_exists($image_path)) {
// send the cached image to the output buffer (browser)
readfile($image_path);
}else{
// create a new image using GD functions

// the original PNG logo image
$image = ImageCreateFromPNG('logo.png');
// the new image we will create with GD to the new dimensions
$new_image = ImageCreateTrueColor($width,$height);

// copy and re-sample the original image to make the new one
ImageCopyResampled($new_image, $image, 0, 0, 0, 0, $width, $height, 466, 100);

// send the new image to the browser
ImagePNG($new_image);
// now save a copy of the new image to the cache directory
ImagePNG($new_image, $image_path);

// destroy the image in memory to free up server resources
ImageDestroy($new_image);
}

[/PHP]

s'Amstel

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi Amstel,

danke für die Info, aber das ist mir schon alles bewusst...

Nur kommt mir so vor, auch wenn die Datei gecached auf dem Server liegt, dass der Browser diese trotzdem nicht cached.

Der Browser cached ja die Bilder normalerweise, aber wie gesagt, wenn diese mit PHP generiert sind anscheinend nicht... Evtl hilft da nen header() ?

Wie man die Gd-Lib verwendet ist mir bewusst...

Gruß,

Markus

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

Danke für die Antwort!

Aktuell siehst jetzt so aus:


header('Content-Type: image/'.$thumb->img['format']);
header('HTTP/1.1 304 Not Modified');
header('Last-Modified: '.gmdate('D, d M Y H:i:s', $cachetime));
readfile($cachepath);[/php]

Macht es jetzt überhaupt noch Sinn, noch den Last-Modified-Header mitzuschicken?

Dann kannst du auch die Vorteile von HTTP 1.1 nutzen.

Die da wären?

Gruß,

Markus

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...