[gelöst] programmatisch ausgegebene IMGs werden doppelt geladen ?
Eingetragen von tetri999 (153)
am 19.08.2015 - 13:07 Uhr in
am 19.08.2015 - 13:07 Uhr in
Hallo,
um eine bessere Kontrolle über die HTML-Ausgabe zu haben, erzeuge ich an einigen Stellen das HTML (z.B. für Teaser mit verlinktem IMG) in einem custom-Modul selbst:
...
$imgURI = $node->field_image['und'][0]['uri'];
print l( '<img src="' . file_create_url($imgURI) . '">', 'node/' . $node->nid, array('html'=>true, 'attributes'=>array('title'=>'zur Detailansicht: ' . $node->title)) );
...
Das Problem:
Mein FireBug zeigt mir, daß die auf diese Weise eingebundenen Bilder doppelt geladen werden - was sich natürlich auf die Ladezeit auswirkt.
Allerdings nicht immer, manchmal nur bei einem Reload der Seite.
Hat vielleicht jemand eine Idee, woran das liegt?
Oder gibt es eine bessere Methode, Bilder programmatisch auszugeben?
Die übliche Methode über image-styles usw. will ich vermeiden, um die Drupal-interne Bildverarbeitung zu umgehen.
mfG, Michael
- Anmelden oder Registrieren um Kommentare zu schreiben
Hallo, was für einen Hook
am 19.08.2015 - 15:04 Uhr
Hallo,
was für einen Hook verwendest Du in deinem Custom Module (ggf. node_load)?
Ich vermute mal das dieser Hook 2x aufgerufen wird.
Du kannst ein
drupal_set_message(__FUNCTION__);
ganz oben in der Funktion einfügen um zu sehen ob dies der Fall ist.
Ich bezweifle allerdings dass das gleiche Bild vom Browser tatsächlich neu geladen wird,
weil das erste nach dem Laden ja schon im Cache sein müsste!
Das 2. Bild müsste eigentlich grau in Firebug oder 304 Status haben.
Wegen den Ladezeiten würde ich image-styles verwenden, da diese ja genau auf die
definierte Grösse runtergerechnet werden.
Ohne die Styles lädst Du einfach ein grösseres Bild und zeigst halt dieses kleiner an.
Es sei denn, du ladest genau die benötigten Bildgrössen hoch, in dem Fall kannst Du darauf verzichten.
Gruss
Robert
Genau so ist es,
am 19.08.2015 - 16:41 Uhr
wir laden alle Bildvarianten in der benötigten Größe einzeln hoch - wie gesagt, um die Drupal-interne Umrechnung zu vermeiden.
Ist vielleicht etwas umständlich, aber sauberer.
Den Inhalt hole ich mit node_load, was aber tatsächlich nur einmal aufgerufen wird.
Trotzdem werden die Bilder 2 mal geladen (nicht grau und nicht 304).
Das Ganze scheint aber an meiner lokalen Umgebung zu liegen (WIN7, XAMPP, FF) - auf anderen Rechnern habe ich den Effekt nicht!
Also betrachten wir das mal als erledigt.
Trotzdem vielen Dank, Michael