Thumbnails - Best practice?
Gerhard
- php
Hallo,
es geht um stinknormale Bildergalieren. Was glaubt ihr ist besser: Thumbnails (100x75) der Originalbilder (in meinem Fall max. 600x450, also nicht mehr als 100 KB) on the fly per PHP-Image-Funktionen zu berechnen oder diese physikalisch irgendwo abzulegen. Habe ich zurecht Bedenken bezüglich der Antwortzeiten bei der on-the-fly-Methode?
Danke für eure Meinungen!
mfG, Gerhard
Habe ich zurecht Bedenken bezüglich der Antwortzeiten bei der on-the-fly-Methode?
Kommt auf das Schmalz des Servers an.
Kommt auf das Schmalz des Servers an.
Hm... da hast du wohl Recht. Ich bin leider schon lange weg aus der Webentwicklung und schau erst jetzt wieder mal kurz rein, deshalb fehlt mir das Abschätzungsvermögen... irgendeine Idee ob, im Allgemeinen oder in der Regel, wie auch immer du willst, ein 5-Euro-Webspace genug Schmalz hat?
Kommt auf das Schmalz des Servers an.
Hm... da hast du wohl Recht. Ich bin leider schon lange weg aus der Webentwicklung und schau erst jetzt wieder mal kurz rein, deshalb fehlt mir das Abschätzungsvermögen... irgendeine Idee ob, im Allgemeinen oder in der Regel, wie auch immer du willst, ein 5-Euro-Webspace genug Schmalz hat?
Das ist nur einer der Faktoren - ein 5-Euro-Webspace ist sicher ausreichend, wenn du täglich 100 Besucher hast.
Wenn du täglich 100 Millionen Besucher hast, kann selbst ein einzelner Root-Server mit High-End-Hardware zu schwach sein.
Wenn du täglich 100 Millionen Besucher hast, kann selbst ein einzelner Root-Server mit High-End-Hardware zu schwach sein.
Da hast du wohl Recht. Dankeschön für deine Hinweise!
Hello,
es geht um stinknormale Bildergalieren. Was glaubt ihr ist besser: Thumbnails (100x75) der Originalbilder (in meinem Fall max. 600x450, also nicht mehr als 100 KB) on the fly per PHP-Image-Funktionen zu berechnen oder diese physikalisch irgendwo abzulegen. Habe ich zurecht Bedenken bezüglich der Antwortzeiten bei der on-the-fly-Methode?
Auf jeden Fall ablegen und nicht mit Imagick oder GD-Lib erzeugen, wenn Du ein anderes gutes Programm zum Umrechnen hast. Diese Programme können dann nämlich die Thumbs auch noch optimieren, was mit Imagick oder GD-Lib nicht wirklich geht.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Auf jeden Fall ablegen und nicht mit Imagick oder GD-Lib erzeugen, wenn Du ein anderes gutes Programm zum Umrechnen hast. Diese Programme können dann nämlich die Thumbs auch noch optimieren, was mit Imagick oder GD-Lib nicht wirklich geht.
OK danke für eine Antwort. Aber da stoße ich gleich auf ein nächstes Problem. Gibts auch irgendwas für PHP, das mir, wie du sagst, "optimierte" Thumbnails generieren kann? Ich würde nämlich schon gern beim Upload der Bilder über ein CMS die zugehörigen Thumbnails automatisch von PHP generieren lassen --> dummer Anwender.
OK danke für eine Antwort. Aber da stoße ich gleich auf ein nächstes Problem. Gibts auch irgendwas für PHP, das mir, wie du sagst, "optimierte" Thumbnails generieren kann? Ich würde nämlich schon gern beim Upload der Bilder über ein CMS die zugehörigen Thumbnails automatisch von PHP generieren lassen --> dummer Anwender.
Für PNG gibt es z.B. OptiPNG oder Pngcrush, die lassen sich mittels PHP auch per Commandline ausführen - was man im Grunde ja bei ImageMagick auch macht.
Für JPEG wirds ähnliches geben.
Auf jeden Fall ablegen und nicht mit Imagick oder GD-Lib erzeugen, wenn Du ein anderes gutes Programm zum Umrechnen hast. Diese Programme können dann nämlich die Thumbs auch noch optimieren, was mit Imagick oder GD-Lib nicht wirklich geht.
Mit ImageMagick lassen sich hervorragend optimierte Thumbs erzeugen.
Hi,
Was glaubt ihr ist besser: Thumbnails (100x75) der Originalbilder (in meinem Fall max. 600x450, also nicht mehr als 100 KB) on the fly per PHP-Image-Funktionen zu berechnen oder diese physikalisch irgendwo abzulegen.
das hängt von vielen Faktoren ab, beispielsweise:
* wieviele Bilder insgesamt?
* wie groß ist die Nachfrage (Zugriffszahlen)?
* wie oft werden Bilder ausgetauscht oder hinzugefügt?
Ich finde auch, dass deine angenommene Thumbnail-Größe noch zu groß im Verhältnis zu den Original-Bildern ist. Andersrum: Bei Bildern mit den von dir angegebenen Maßen würde ich mir überlegen, ob ich *überhaupt* Thumbnails einsetzen möchte.
Aber angenommen, die Bilder werden größer - sowohl in der Pixelzahl, als auch in der Datenmenge. Dann würde ich mir überlegen, die Thumbnails auf Anforderung (also on the fly) zu generieren, und dann zu speichern. Das heißt, das Thumbnail-Script schaut bei einer Anfrage erst nach, ob der angeforderte Thumbnail schon existiert (und jünger ist als das Originalbild!) - wenn ja, wird er einfach direkt ausgeliefert, ansonsten frisch generiert und erzeugt.
Habe ich zurecht Bedenken bezüglich der Antwortzeiten bei der on-the-fly-Methode?
Weiß ich nicht, müsste man ausprobieren. Bei den relativ kleinen Bildern glaube ich aber nicht, dass die Verzögerung erwähnenswert ist.
Ciao,
Martin
Moin Moin!
Wenn Du nicht offline schon Thumbnails vorberechnen willst (siehe Toms Posting), kannst Du Dir wenigstens verkneifen, Thumbnails für jeden Request neu zu berechnen, indem Du die generierten Thumbnails irgendwo im Dateisystem lagerst und diese bevorzugt ausliefertst, idealerweise ohne den Umweg über PHP.
Mit einem eigenen Error-Handler im Webserer, der genau dann anspringt, wenn ein Thumbnail noch nicht im Dateisystem vorhanden ist (Status 404), ließe sich PHP großenteils vermeiden. Der erste Zugriff auf ein Thumbnail rennt in den Error-Handler, der erkennt anhand der angeforderten URL und der vorhandenen Originalbilder, dass ein Thumbnail gefordert ist, berechnet den Thumbnail, speichert den genau dort im Dateisystem, wo er das nächste mal gesucht wird, und liefert den berechneten Thumbnail mit Status 200 aus. Der nächste Zugriff geht direkt auf die Datei, ohne dass der Error-Handler anspringt, und der Webserver kümmert sich ganz alleine und sehr effizient um den Rest.
Alternativ lieferst Du die Thumbnails immer über PHP aus, mit dem dabei zwangsläufig entstehenden Overhead. Ganz grob schaut PHP nach, ob der angeforderte Thumbnail vorhanden ist, wenn nicht, wird er generiert und in eine Datei geschrieben. In jedem Fall, auch wenn der Thumbnail frisch generiert wurde, lieferst Du dann diese Datei aus.
Alexander
Tach auch.
Mit einem eigenen Error-Handler im Webserer, der genau dann anspringt, wenn ein Thumbnail noch nicht im Dateisystem vorhanden ist (Status 404), ließe sich PHP großenteils vermeiden. Der erste Zugriff auf ein Thumbnail rennt in den Error-Handler, der erkennt anhand der angeforderten URL und der vorhandenen Originalbilder, dass ein Thumbnail gefordert ist, berechnet den Thumbnail, speichert den genau dort im Dateisystem, wo er das nächste mal gesucht wird, und liefert den berechneten Thumbnail mit Status 200 aus. Der nächste Zugriff geht direkt auf die Datei, ohne dass der Error-Handler anspringt, und der Webserver kümmert sich ganz alleine und sehr effizient um den Rest.
"Normalerweise" wird sich ein Bediener eines CMS aber die Seite/den erzeugten Inhalt einmal ansehen. Dann kann man das Bild auch gleich beim Hochladen erzeugen.
Ich vermute daher mal, dass dein Vorschlag nicht wirklich viel bringen wird (auch wenn er technisch gut gedacht ist!).
Bis die Tage,
Matti
Moin Moin!
"Normalerweise" wird sich ein Bediener eines CMS aber die Seite/den erzeugten Inhalt einmal ansehen. Dann kann man das Bild auch gleich beim Hochladen erzeugen.
Ja, richtig. Das CMS ist mir irgendwann beim Lesen des Threads entfallen. Wenn man Bilder ausschließlich über das (wie auch immer geartete) CMS hochlädt, und eben NICHT direkt ins Dateisystem per FTP o.ä., ist der sinnvollste Zeitpunkt zum Generieren des Thumbnails natürlich der Upload.
Alexander
es geht um stinknormale Bildergalieren. Was glaubt ihr ist besser: Thumbnails (100x75) der Originalbilder (in meinem Fall max. 600x450, also nicht mehr als 100 KB) on the fly per PHP-Image-Funktionen zu berechnen oder diese physikalisch irgendwo abzulegen.
Ich stelle als User Thumbnails generell in Frage.
Ich verwende Sie nicht.
Ob ich in einer Gallerie weiterklicke hängt davon ab, ob mir das aktuelle Bild etwas sagt.
Als ich ein Gallerie-Plugin für mein CMS schrieb, habe ich gleich auf Thumbnails verzichtet.
Auch werden keine Bilder vorgeladen, abgesehen vom Startbild der Gallerie.
Ich erachte diese Lösung als durchaus webgerecht.
Wer ein Problem mit der Bandbreite hat, hat am Vorladen von Bildern auch keine Freude.
mfg Beat
Hi,
Ob ich in einer Gallerie weiterklicke hängt davon ab, ob mir das aktuelle Bild etwas sagt.
Wenn mir das erste Bild nichts sagt, entgehen mir dann aber Nummer 2, 5 und 7, die ich durchaus interessant finden würde.
Thumbnails könnten mir darüber schon im Voraus eine Auskunft geben.
MfG ChrisB
Thumbnails könnten mir darüber schon im Voraus eine Auskunft geben.
Sie können dich aber auch verarschen, weil sie nicht das wiedergeben können, was das Vollbild darstellen soll.
Und das habe ich zu oft erlebt, um Thumbnails überhaupt noch zu betrachten.
Andere Arten von Vorschaubilder sind davon nicht betroffen.
Wie gesagt: Das ist Meinung und persönliche Erfahrung. Das können/dürfen andere anders sehen.
mfg Beat
Sie können dich aber auch verarschen, weil sie nicht das wiedergeben können, was das Vollbild darstellen soll.
Das nennt sich Scam und nicht Thumbnail - alternativ haben die großen Bilder aber auch nur ein Wasserzeichen, das ist z.B. auf Bildverkaufsportalen üblich.
Wie gesagt: Das ist Meinung und persönliche Erfahrung. Das können/dürfen andere anders sehen.
Du verkehrst scheinbar oft auf wenig seriösen Seiten :)
Thumbnails könnten mir darüber schon im Voraus eine Auskunft geben.
Sie können dich aber auch verarschen, weil sie nicht das wiedergeben können, was das Vollbild darstellen soll.
Richtig! Selbst Schwarzweißbilder wirken erst ab 40 mal 60 Zentimetern und zwar aufgehängt!
Hotti