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 Sortierung Artikel Wawi - JTL Shop Allgemeine Fragen zu JTL-Shop 1
Neu Eigene Felder - Sortierung wird nicht in JTL Shop übernommen - Anzeige im Shop immer unterschiedlich User helfen Usern - Fragen zu JTL-Wawi 0
Neu JTL Shop (anderes Template) eigene Felder aus Wawi als TAB im Shop User helfen Usern - Fragen zu JTL-Wawi 12
Neu JTL-Shop Lieferanten Artikelnummer und Suchbegiffe für Onlineshop werden im Shop nicht gefunden Allgemeine Fragen zu JTL-Shop 5
Neu Behandlung von JTL Shop Coupons und Retouren in JTL Wawi Arbeitsabläufe in JTL-Wawi 0
Neu Welche Alternativen zu JTL-Shop JTL-Shop - Ideen, Lob und Kritik 9
Neu JTL Shop 5.5.1 Lieferland kann bei abweichender Lieferadresse nicht ausgewählt werden JTL-Shop - Fehler und Bugs 9
Neu JTL Shop: Ausblenden von Unterkategorien (In der Mitte) möglich ? Allgemeine Fragen zu JTL-Shop 0
Neu JTL Shop 5.5 Tips für bessere Performance? Allgemeine Fragen zu JTL-Shop 5
Neu JTL Debug 2.0.4 und Shop 5.5.2 - Fehler 500 Plugins für JTL-Shop 3
Neu Sprechende URLs & Sprachlogik im JTL-Shop – Wer hat’s schon umgesetzt? Allgemeine Fragen zu JTL-Shop 1
Neu JTL Shop 5.5.2 Startseite Breite ändern Allgemeine Fragen zu JTL-Shop 1
Neu .php-cs-fixer.php - nicht identisch mit den Dateien der aktuellen Version von JTL-Shop JTL-Shop - Fehler und Bugs 3
Neu JTL-Shop: Anzeige der Artikel aus untergeordneten Kategorien Allgemeine Fragen zu JTL-Shop 2
Warnmeldung JTL-Shop Anbindung nach Update JTL-Wawi 1.10 5
Neu Erfahrungen gesucht: Custom Shop (Next.js/React) an JTL-Wawi anbinden Allgemeines zu den JTL-Connectoren 1
Barrierefreiheit mit Upgrade auf JTL-Shop 5.5 erledigt? Einrichtung JTL-Shop5 24
Beantwortet Kontaktformulare im JTL Shop Betrieb / Pflege von JTL-Shop 1
Neu Gleiche Designvorlage für eBay und JTL-Shop mit globalen Textbausteinen nutzen Allgemeine Fragen zu JTL-Shop 0
Neu Guthaben-Funktion in JTL Shop ohne MwSt. buchhalterisch nicht abbildbar JTL-Shop - Ideen, Lob und Kritik 17
Neu JTL Shop 5.5.1 : Lieferzeit wird mit "0 Werktagen" ausgegeben, obwohl Lieferzeiten bei Versandarten hinterlegt sind JTL-Shop - Fehler und Bugs 3
Neu Exportformate liefern nur netto Werte für Versandkosten seit JTL Shop 5.5.0 Betrieb / Pflege von JTL-Shop 6
Neu Neu angelegte Währungen werden nicht alle im JTL-Shop angezeigt Betrieb / Pflege von JTL-Shop 0
Neu Fehler bei Anbindung JTL Wawi und JTL Shop 5 JTL-Shop - Fehler und Bugs 1
Neu Weitere Sprache im JTL-Shop hinzufügen – Anleitung fehlt klare Struktur Allgemeine Fragen zu JTL-Shop 4
Neu Nova Child Template für JTL Shop 5.5 defekt? Installation / Updates von JTL-Shop 5
Neu [JTL Shop 5.4] Bilder für die Unterkategorien werden nicht angezeigt Allgemeine Fragen zu JTL-Shop 2
Neu Umstellung auf JTL Shop - Risk Management wie in Shopware ?! Allgemeine Fragen zu JTL-Shop 7
Neu Umstellung auf JTL Shop - Login mit Kundennummer ? Allgemeine Fragen zu JTL-Shop 2
Neu Umstellung auf JTL Shop - Frage zu Auswahlartikel / Bundle / Set Allgemeine Fragen zu JTL-Shop 5
Neu JTL-Shop zum JTL-WAWi anbinden JTL-Wawi - Fehler und Bugs 12
Neu Plugin "Verwalte deinen JTL Shop mit Excel Dateien" geht wohl nicht mit JTL-Shop 5.4.1 Plugins für JTL-Shop 1
Neu Biete Premium-Lizenzen für JTL-Shop 5 – Template & Plugins Dienstleistung, Jobs und Ähnliches 0
Neu Aufträge im JTL-Shop ohne Adresse JTL-Shop - Fehler und Bugs 1
Neu JTL Shop 5.4 Cronjob alle paar Sekunden Allgemeine Fragen zu JTL-Shop 4
Neu JTL Experte auf Freelancer Basis für Projekteinführung und Support JTL wawi und shop gesucht: Dienstleistung, Jobs und Ähnliches 3
Neu JTL-Shop 5.5.0 PayPal Plugin Installation / Updates von JTL-Shop 2
Neu Nutzt jemand im JTL Shop TripleWhale? Allgemeine Fragen zu JTL-Shop 0
Neu JTL-SHOP - Abgleichsfehler - Bestellungen_xml.php User helfen Usern - Fragen zu JTL-Wawi 2
Wichtig JTL-Shop 5.5 - Aktuell 5.5.2 Releaseforum 2
Neu JTL Wawi an Testumgebung JTL Shop anbinden User helfen Usern - Fragen zu JTL-Wawi 3
Neu Migration bestehender Kundenkonto von Magento zu JTL Shop Umstieg auf JTL-Shop 0
Neu Plugin Produktsicherheitsverordnung (GPSR) Plugin für den JTL-Shop 5 nicht PHP 8.4 fähig Technische Fragen zu Plugins und Templates 4
Neu Probleme beim Abgleich von JTL WAWI und JTL Shop JTL-Wawi - Fehler und Bugs 3
Neu [Gelöst][shop 5.4.1] Newsletter Abmeldung "Fatal error: Uncaught Error: Typed property JTL\Optin\OptinRefData::$optinClass must" JTL-Shop - Fehler und Bugs 1
Neu JTL-Wawi 1.10.8.0 Error bei Bestellhistorie erneut Abrufen vom Shop JTL-Wawi - Fehler und Bugs 0
JTL-Shop Abgleiche geht nicht mehr JTL-Wawi 1.10 5
Neu Artikelübersicht: JTL-Shop lädt per AJAX gesamte Html-Seite in das Filter-Modal JTL-Shop - Fehler und Bugs 0
Neu Zugriff auf Rechnungsnummer innerhalb von JTL Shop Technische Fragen zu Plugins und Templates 0
Kunden UStID wird nicht aus Amazon in JTL übermittelt Amazon-Anbindung - Fehler und Bugs 1

Ähnliche Themen