Browser kann Artikelbild nicht cachen

Kein System ist vollkommen, findet Ihr Fehler im System, könnt ihr diese hier gerne Posten. Wir werden auch kurzfistige Lösungen und Fixes hier schreiben.

Moderatoren: Magnus, mmaass, ablass

Browser kann Artikelbild nicht cachen

Beitragvon Magnus » Sa 9. Apr 2016, 09:52

Hallo,

über http://forum.randshop.com/viewtopic.php?f=67&t=11911&p=46483#p46483 bin ich auf einen Fehler gestoßen.
Durch die neue Art den Url des Artikelbildes zu erstellen kann kein Browser mehr das Bild cachen. Das heißt, dass bei wiederholtem Aufruf der Artikeldetailanzeige das Bild immer wieder neu vom Server geholt wird.
Dazu kommt, dass immer das große Bild geladen wird und dann auf etwa halbe Breite und halbe Höhe im HTML skaliert wird. Es wird also etwa die vierfache Datenmenge geladen als notwendig und das bei jedem Aufruf der Artikeldetailseite. Ich schreib das jetzt zwar unter Bugmeldungen, eigentlich ist es ein Fehler im Programmdesign, weniger ein Bug.
Ursache ist, das der Url einen sekundengenauen Timestamp angehängt bekommt. Damit ist die Adresse bei jedem Aufruf neu und der Browser lädt das neue (alte) Bild, ohne diesen Timestamp würde beim zweiten Aufruf das Bild aus dem Browsercache geholt, müsste also nicht neu vom Server übertragen werden.
So wie ich das sehe, wird das in der includes/functions.artikel.inc.php zusammengebaut, so ab der Zeile 1371:
BildformatierungArtikeldetail.png
BildformatierungArtikeldetail.png (107.36 KiB) 9657-mal betrachtet

Die rot markierten Teile können ersatzlos entfernt werden.

Die verwendete Funktion time() gibt die seit dem 1.1.1970 bis jetzt vergangenen Sekunden an. Die sind natürlich bei jedem Aufruf ein bisschen mehr. Mögliche Absicht dahinter könnte sein, dass wenn im Admin Bilder geändert werden, die auch sofort angezeigt werden. Dazu jedoch könnte statt time() das Erstellungsdatum des Bildes im Bildnamen verwendet werden, oder auch eine zufällig erstellte Zeichenfolge. Damit wäre das Problem beim Ändern behoben und das Bild könnte dennoch gecached werden. Wo ich das schreibe, das ist eine gute Idee ... Werd ich in mein ArtikelAdminModul einbauen :-) Da habe ich sowieso schon die Erstellung des Url für die Bilder so geändert, dass der Artikelname darin vorkommt (ist für SEO nützlich)

Die Artikelübersichten im randshop sind davon nicht betroffen, die werden an anderer Stelle zusammengebaut. Das ist auch verbesserungswürdig. Günstig wäre, hier nur eine Funktion für den Zusammenbau der Bilder zu verwenden. Dann würde so ein Fehler leichter gefunden werden.

So ganz allgemein wünsche ich mir sowieso, dass das Zusammenbauen von HTML-Elementen nicht in themes sondern in templates geschieht. In themes werden dann die Daten gesammelt und zusammengestellt und in templates für die Anzeige aufbereitet. Hier könnte man eine HTML-Helper Klasse verwenden.
Hätte einfach den Vorteil, dass beim Erstellen eines Templates die HTML-Elemente je nach Vorstellung des Shopbetreibers und den Anforderungen des Templates erstellt werden können.
Aber das habe ich ja schon öfter erklärt :-)

Feedback ist, wie immer, herzlich willkommen!

viele Grüße

magnus
Magnus
 
Beiträge: 1602
Registriert: Mi 21. Feb 2007, 21:10

Zurück zu Bugmeldungen

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 10 Gäste
cron