Flickr und das Image Plugin oder “Dees is sowieso blääd”

Bastian Schwarz Datum: 21. September 2011
Autor: Bastian Schwarz


Gerade habe ich ein Problem für unser Kundenprojekt “Holsteinische Schweiz” analysiert:

Im Keyvisual wurden bis zu 20 Flickr-Bilder geladen. Die URLs der Bilder wurden über die Flickr API geholt und dann durch das Image Plugin geladen, entsprechend gerechnet und abgelegt.

So weit, so gut. Nun das Problem: Für den Dateinamenhash benutzt ajaxImage u.a. die Breite und Höhe. Diese wurden für jedes Bild über getimagesize() bezogen. D.h. jedes Bild wurde bei jedem Request erneut geladen und eingelesen, unabhängig davon ob es schon bearbeitet war oder nicht. Bei 20 Bildern entstand so eine serverseitige Ladezeit von ca. 20 Sekunden.

Hier sollten wir uns mal Gedanken über eine bessere Lösung machen (Reicht die URL als ID? Gibt es andere Möglichkeiten, ohne das komplette Bild zu laden? …)

Kommentare erwünscht 😉

Bastian

Kommentare

Axel Güldner

Axel Güldner

– 21. September 2011 / 14:02

So wie ich das sehe, entsteht das Problem, wenn das Bild per getimagesize in php geladen wird, um an Höhe und Breite zu gelangen, sobald keiner oder nur einer der beiden Parameter an das Plugin übergeben wurde.

if(!$width || !$height){
$imageInfo = @getimagesize($url);

Da der darauf folgende Code zur Errechnung des fehlenden Parameters eh nur Sinn macht wenn tatsächlich zumindest ein Parameter gegeben ist und nicht beide fehlen so wie im gegebenen Beispiel, könnte man doch erst einmal den OR-Operator durch ein exklusives Oder ersetzen. Dann würde getimagesize auch nur dann aufgerufen wenn tatsächlich nur ein Parameter angegeben wurde.

Marco

– 4. Oktober 2011 / 06:24

Also eine Höhe und eine Breite wird bei der TZHS ja übergeben.

Die langen Ladezeiten entstehen meiner Meinung nach eher durch die Anfragen an flickr. Ich denke, dass ein Nachladen der Bilder per AJAX hier wohl das beste wäre.

Marco

– 4. Oktober 2011 / 08:53

Nach erneuter Überprüfung habe ich festgestellt, dass die getimagesize immer angefragt wurde, egal ob bereits ein lokales vorhanden war, um die Höhe/Breite eines Bildes zu ermitteln, welche benutzt wurden, wenn diese Angaben nicht direkt an das Plugin übergeben wurden.

Nun wird überprüft, ob eine Höhe und eine Breite an das Plugin übergeben wurden, ist dies der Fall wird ZUERST nachgesehen, ob es bereits ein lokales Bild davon gibt. Ist das der Fall muss die Höhe/Breite nicht mehr vom Server abgefragt werden.

Diese Vorgehensweise sollte die Performance-Probleme damit beheben.

Viele Grüße
Marco

Selber kommentieren:






Weitere Beiträge zum Thema Technologie


iOS Probleme mit transition

Autor: Florian Müller


Technologie // User Experience & Design


Heute ist mir bei einem Projekt ein Problem mit iOS begegnet. Es gibt eine Galerie, bei welcher die Elemente von oben “hereinfliegen”. Auf dem iPad und dem iPhone war dieser Effekt kaum beziehungsweise gar nicht vorhanden, sondern das Bild war einfach *plopp* da. Problem hierbei ist, dass transitions bei iOS ohne Hardware Beschleunigung gerendert werden. …


Beitrag lesen
28.
Sep.
2016

CSS Selectors and Pseudo Selectors and browser support

Autor: Benjamin Hofmann


Technologie // User Experience & Design


Eben bin ich auf eine interessante Seite zum Thema Selektoren in CSS gestoßen, die sehr übersichtlich auflistet was geht und was nicht und vor allem in welchen Browsern dies der Fall ist. Leider ist die Seite nicht mehr ganz aktuell, aber für einen schnellen Überblick sollte sie allemal ausreichen. Und mit etwas Glück kommt auch …


Beitrag lesen
17.
Februar
2012

ReCSS – Reload your CSS

Autor: Benjamin Hofmann


Technologie


Jeder kennt das Problem. Man ändert einen kleinen Style, bspw. ob der Text fett ist oder nicht und dann lädt man die Seite neu, um zu schauen wie es aussieht. Und dann wartet man. Lokal manchmal sogar ziemlich lang und das für die kleinste Anpassung. Es gibt jedoch ein kleines Bookmarklet, um die Style-Entwicklung zu …


Beitrag lesen
22.
August
2012

Xdebug Stacktrace verbessern

Autor: Florian Müller


Technologie


Ich habe mich heute im Zuge eines kleinen Problems mit einem Stacktrace etwas mit der xDebug Konfiguration beschäftigt. Dabei bin ich auf eine kleine nützliche Option gestoßen, welche ich euch nicht vorenthalten möchte. Die Optionen xdebug.collect_params Es gibt die Option xdebug.collect_params, welche verschiedene Level an Output ermöglicht. Ich habe mich in meiner VM für den …


Beitrag lesen
03.
August
2017