Offen JTL Shop 3.19 b5: Smarty in "artikel.php" verursacht Performance Probleme - Bug?

Nippon

Gut bekanntes Mitglied
1. Juni 2009
743
8
Hallo!

Aufgrund schlechter Ladezeiten haben wir nach Update auf 3.19 (3.20 folgt bald) alle unnötigen Plugins rausgeworfen, viel an unserem Template optimiert und letztendlich auch einen neuen Server bei Estugo mit SSD-Festplatten etc. eingerichtet. Dadurch sind die Ladezeiten der Startseite schon enorm vebessert worden:

- Startseite: 1,1 sek (Erstbesuch) / 700ms (re-visit mit Cache)

- Kategorien: 1 sek (Erstbesuch) / 560ms (re-visit mit Cache)
- Sonstige Inhaltsseiten (z.B. Impressum): 1 sek (Erstbesuch) / 500ms (re-visit mit Cache)

Mies waren hingegen die Produktseiten (besser als vorher, aber immer noch schlecht)



- Produktseite ohne Videos: 4,2 sek (Erstbesuch) / 3 sek (re-visit mit Cache)

- Produktseite mit Videos: 7,1 sek (Erstbesuch) / 5 sek (re-visit mit Cache)

Unser Programmierer hat den Flaschenhals gesucht und nach und nach das Template bis auf eine weiße Seite ohne HTML runtergefahren, die Probleme saßen aber tiefer. Lokalisiert wurden zwei Codestellen in der "artikel.php", deren Ausklammerung die Ladezeiten um den Faktor 4-5 reduziert. Konkret:

Code:
// Zeile 299

if(intval($Einstellungen['artikeldetails']['artikeldetails_aehnlicheartikel_anzahl']) > 0) {

	$smarty->assign("oAehnlicheArtikel_arr", holeAehnlicheArtikel($kArtikel));
}



// Zeile 320

$smarty->assign('Xselling',gibArtikelXSelling($AktuellerArtikel->kArtikel));


Ohne diese beiden Zeilen und entsprechend ohne X-Selling, Ähnliche Artikel etc. in der Artikelübersicht, beträgt die Ladezeit nur noch 600 ms - 1,1 sek auf Artikelseiten. Daher die Frage, ob da irgend etwas "falsch läuft" oder ob es unveränderbar so ist, dass es bis 4 - 7 Sekunden dauert diese Codezeilen auszuführen? Jemand eine Idee, wie ohne Deaktivierung hier ein Perfomace-Schub erreicht werden kann?

Gruß,

Nippon
 

Nippon

Gut bekanntes Mitglied
1. Juni 2009
743
8
AW: JTL Shop 3.19 b5: Smarty in "artikel.php" verursacht Performance Probleme - Bug?


Aktiv im Shop sind 6.500 Artikel, aber Crosselling nur bei einer Handvoll bisher eingerichtet. "Ähnliche Produkte" / "Kunden kauften auch" gibt es natürlich.

Ich kann für einen Test gerne mal alle Artikel rauslöschen und nur 100 hochladen, ob die Scripts dann weniger blockieren. Falls die "Echtzeit"-Berechnung aber so lange dauert bei "ähnlichen Artikeln" oder "Kunden kauften auch", hätte man das ggf. besser täglich per Cronjob gemacht und in eine Tabelle eingetragen.
 

Nippon

Gut bekanntes Mitglied
1. Juni 2009
743
8
AW: JTL Shop 3.19 b5: Smarty in "artikel.php" verursacht Performance Probleme - Bug?

Unser Programmierer ist der beste und hat die Ursache gefunden und bei uns auch behoben! Fortan laden unsere Artikelseiten inkl. X-Selling, Kunden kauften auch / ähnliche Artikel etc. in nur 800 ms und wir haben wohl den schnellsten JTL 3 Shop im WWW :)

Übeltäter ist die Zeile 83 in der /includes/artikel_inc.php:

PHP:
ORDER BY x.nAnzahl DESC, rand()

Unser Programmierer war zugegeben schockiert, dass in einer Select-Abfrage der native rand() Befehl genutzt wurde - in einem Original JTL-Script vom Shop 3, der ja schon etwas länger auf dem Markt ist und hier nie verbessert wurde. Wenn ich mich nicht irre ist das beim Shop 4 sogar immer noch in der artikel_inc.php...
 

fränki

Aktives Mitglied
28. Januar 2014
28
0
AW: JTL Shop 3.19 b5: Smarty in "artikel.php" verursacht Performance Probleme - Bug?

Hallo Nippon,
bitte entschuldige das ich so dumm Frage (habe keine Ahnung von solchen Dingen)
Muß ich einfach in der "Zeile 83 in der /includes/artikel_inc.php: ORDER BY x.nAnzahl DESC, rand()" das grün markierte () löschen?
 

fränki

Aktives Mitglied
28. Januar 2014
28
0
AW: JTL Shop 3.19 b5: Smarty in "artikel.php" verursacht Performance Probleme - Bug?

Hallo Nippon,
bitte entschuldige das ich so dumm Frage (habe keine Ahnung von solchen Dingen)
Muß ich einfach in der "Zeile 83 in der /includes/artikel_inc.php: ORDER BY x.nAnzahl DESC, rand()" das grün markierte () löschen?

Mein Shop ist der 3.20 (Build: 4)
 

Nippon

Gut bekanntes Mitglied
1. Juni 2009
743
8
AW: JTL Shop 3.19 b5: Smarty in "artikel.php" verursacht Performance Probleme - Bug?

Hallo Nippon,
bitte entschuldige das ich so dumm Frage (habe keine Ahnung von solchen Dingen)
Muß ich einfach in der "Zeile 83 in der /includes/artikel_inc.php: ORDER BY x.nAnzahl DESC, rand()" das grün markierte () löschen?

Mein Shop ist der 3.20 (Build: 4)

Nein, der komplette Aufruf musste neu geschrieben werden. Unsere Lösung funktioniert, aber die ist nicht "offiziell freigegeben" und da wir kein Servicepartner o.ä. sind werde ich das auch nicht veröffentlichen.

Wenn du zum Testen etwas löschen (vorher Backup der Datei anlegen) bzw. ausklammern willst, dann die im ersten Posting erwähnten Zeilen 299 und 320 der artikel.php. Wenn du dann (ohne Cross-Selling etc.) einen Ladezeitenvorteil hast, dann wirst du den mit einem neu geschriebenen Befehl der article_inc.php auch bekommen. Das Problem mit "ORDER BY ... rand()" ist abhängig von der Artikelanzahl (Tabellengröße) und bei unseren 6.500 Artikeln waren das ca. 3 Sekunden mehr als jetzt mit unserem eigenen Script. Und die Funktionalität ist die gleiche geblieben, Cross-Selling, Ähnliche Artikel und Co. funktionieren wie gehabt.

Es kann sein, dass es bei 500 Artikeln kaum einen Unterschied macht und bei 10.000 Artikeln noch viel mehr.
 

FMoche

Moderator
Mitarbeiter
15. Dezember 2014
1.369
347
Halle (Saale)
AW: JTL Shop 3.19 b5: Smarty in "artikel.php" verursacht Performance Probleme - Bug?

Gegen rand() an sich ist jetzt ja nichts einzuwenden, aber in Verbindung mit dem Join ist das in der Tat nicht sonderlich elegant.
Eine perfomantere Alternative wäre eventuell das folgende (die IF-Schleife ab ca. Zeile 67 ersetzen):
Code:
if ($isParent) {
    $inArray = array($kArtikel);
    $tmps    = holeKinderzuVater($kArtikel);
    foreach ($tmps as $_article) {
        $inArray[] = $_article->kArtikel;
    }
    $xsell = $GLOBALS["DB"]->executeQuery("SELECT *
                                            FROM txsellkauf
                                            WHERE kArtikel IN (" . implode(', ', $inArray) . ")
                                            GROUP BY kXSellArtikel
                                            ORDER BY nAnzahl DESC, rand()
                                            LIMIT {$anzahl}", 2);


    if (count($xsell) > 0 && count($tmps) > 0) {
        $childs = array();
        $count = count($xsell);
        foreach ($tmps as $child) {
            $childs[] = $child->kArtikel;
        }


        for ($i = 0; $i < $count; $i++) {
            if (in_array($xsell[$i]->kArtikel, $childs) && in_array($xsell[$i]->kXSellArtikel, $childs)) {
                unset($xsell[$i]);
            }
        }
    }
}
 

Nippon

Gut bekanntes Mitglied
1. Juni 2009
743
8
AW: JTL Shop 3.19 b5: Smarty in "artikel.php" verursacht Performance Probleme - Bug?

Sieht gut aus! Wir haben bei uns jetzt komplett auf rand() verzichtet und das etwas anders gelöst, aber die Grundidee ist soweit ich das als Code-Laie sehe die gleiche.

Danke für das offizielle Feedback! Ich frage mich nur, wieso das niemandem früher aufgefallen ist. Die Produktseiten waren ja schon immer langsam (zumindest bei tausenden Artikeln). Bisher hab ich alles auf den Server geschoben, aber der konnte auch nix dafür.

Unsere Artikelseiten haben jetzt Ladezeiten von 800 ms inkl. Crosselling etc. und das ist super :)
 
Ähnliche Themen
Titel Forum Antworten Datum
Neu Welcher Hoster ist für JTL-Shop 5 empfehlenswert? User helfen Usern 6
Neu Aktuellen JTL Shop installieren *Fehler* Installation / Updates von JTL-Shop 0
Neu JTL Shop Versand Preisstaffel mit negativen Werten?? Allgemeine Fragen zu JTL-Shop 0
Neu JTL Shop - OSS - Länderauswahl notwendig ?! JTL-Shop - Ideen, Lob und Kritik 1
Neu JTL Shop Brevo Plugin meldet keine Abmeldungen an JTL Shop + Kontakte landen nicht in der Willkommenssequenz Plugins für JTL-Shop 0
Neu Suche Freelancer für Aufsetzen JTL B2B Shop Dienstleistung, Jobs und Ähnliches 3
Neu JTL-Shop Admin Bereich und Shop nur noch 504 Gateway Time-out ( Hosting über JTL ) User helfen Usern - Fragen zu JTL-Wawi 4
Neu JTL-Shop 5.5.2 – Fehlerhafter Canonical-Tag im Blog-Template verhindert Indexierung durch Google JTL-Shop - Fehler und Bugs 2
Neu JTL Shop Update von 5.3.3 auf 5.6 mit der Community Free Edition - WaWi funktion weiter gegeben? User helfen Usern - Fragen zu JTL-Wawi 1
Neu JTL Shop - Rabatt pro Kunde möglich ? Allgemeine Fragen zu JTL-Shop 8
Neu JTL-Shop TECHNIK (SalePix) – Problem mit Render Blocking Requests User helfen Usern - Fragen zu JTL-Wawi 2
Neu Kategorierabatte pro Kunde im JTL-Shop Einrichtung von JTL-Shop4 2
Neu Tailwind als Basis für JTL Shop 6 ? Templates für JTL-Shop 2
Neu Gewinnbasierte Provision & gezielte Kunden-Zuordnung im JTL Shop / Wawi User helfen Usern 0
Neu Wie kommen die Versandarten aus JTL-Wawi in den JTL-Shop? Betrieb / Pflege von JTL-Shop 7
Neu JTL Shop - Umwandlung Domain von Test auf Live Allgemeine Fragen zu JTL-Shop 1
Neu Neues Plugin: JTL Closed Shop – Zugangsbeschränkung, Pre-Sale & Wartungsmodus für deinen JTL-Shop Plugins für JTL-Shop 1
Neu JTL-Shop 5.6 - Aktuell 5.6.0 Releaseforum 0
Neu Download-Artikel mit dem Download-Modul anbieten JTL SHOP Plugins für JTL-Shop 6
Neu Die folgenden Dateien sind nicht identisch mit den Dateien der aktuellen Version von JTL-Shop. Allgemeine Fragen zu JTL-Shop 0
Neu Auswahl im JTL Shop - keine Rechnung beilegen - wie in Wawi einlesen ? User helfen Usern - Fragen zu JTL-Wawi 6
Neu PromoBar-Portlet für JTL-Shop 5 – Aktionsleiste, Gutschein & Countdown Plugins für JTL-Shop 1
Neu JTL-Shop-Template Technik – optimiert für Performance & Conversion Templates für JTL-Shop 5
Neu GA4-Tracking für JTL-Shop 5 – sauberes E-Commerce & Kategoriepfade Plugins für JTL-Shop 0
Neu Artikelseiten 500 HTTP Fehler PayPal Plugin 2.1.0 JTL Shop 5.4.0 Plugins für JTL-Shop 4
Neu Rechnungsnummer an JTL-Shop übertragen Technische Fragen zu Plugins und Templates 0
Neu Kundenübernahme Shopware zu JTL Shop - Länderzuweisung User helfen Usern - Fragen zu JTL-Wawi 1
Kunden im JTL Shop sichtbar ? Einrichtung JTL-Shop5 7
Neu JTL Shop 5: ein Kundenkonto in der WAWI mit mehreren Konten im Webshop Allgemeine Fragen zu JTL-Shop 7
Neu ecomdata offline? Shop und JTL Wawi nicht erreichbar User helfen Usern - Fragen zu JTL-Wawi 16
Neu JTL Shop 5 Probleme mit Anlegen eines Kundenaccounts Allgemeine Fragen zu JTL-Shop 4
Neu JTL PayPal Checkout 5.3.0 mit Shop 5.5.2 - Artikel nur sichtbar wenn Kunde eingeloggt ist oder Artikel nicht verfügbar ist Plugins für JTL-Shop 6
Neu Session Blocking JTL-Shop 5.5.1 JTL-Shop - Fehler und Bugs 0
JTL Wawi und JTL-POS gleichen nicht mehr ab JTL-Wawi 1.11 1
Neu JTL Theme Editor Templates für JTL-Shop 4
Neu 2 Instanzen JTL-POS Einrichtung / Updates von JTL-POS 0
Neu Übergabe Versandlaber an Fulfiller möglich über FFN standallone aber nicht über FFN mit angebundeener JTL-WAWI Arbeitsabläufe in JTL-Wawi 0
Ticket erstellen bei einer Fehlermeldung mit JTL-Start ??? JTL-Wawi 1.9 1
Neu JTL Track&Trace API Fehler derzeit? seit 15:50 Uhr JTL-Track&Trace - Fehler und Bugs 2
Neu JTL Shipping Server nicht erreichbar JTL-ShippingLabels - Fehler und Bugs 19
Neu 15 Jahre Vapsmoke.ch – unser Weg zu JTL Shops stellen sich vor 1
Neu JTL STAMMTISCH BONN – 13.11.2025 – powered by SaphirSolution Messen, Stammtische und interessante Events 0
JTL Plattform ebay Designvorlage JTL-Wawi 1.11 5
Studio-Webcast E-Com Insights mit JTL: Black Friday Edition am 30.10.25 Messen, Stammtische und interessante Events 0
JTL Wawi API beendet Registrierung nicht 1.11.1 JTL-Wawi 1.11 5
Neu Fehlerhafte Adress-Übernahme durch NinePoint (Mirakl → JTL) – wer ist noch betroffen? JTL-Wawi - Fehler und Bugs 3
Jtl-Amz Problem JTL-Wawi 1.9 0
Neu Dropshipping Import/Export von JTL zu JTL User helfen Usern - Fragen zu JTL-Wawi 6
Keine Anmeldung mehr möglich in JTL Wawi seit Update? JTL-Wawi 1.11 5
JTL-Wawi stürzt beim Speichern des Shopify-Connectors jedes Mal ab JTL-Wawi 1.11 0

Ähnliche Themen