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
346
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
Gelöst JTL Shop - Artikel Konfigurator - Menge veränderbar Templates für JTL-Shop 2
Neu Einrichtung von Versandarten in JTL-Shop und Verknüpfung mit JTL-Wawi Installation / Updates von JTL-Shop 12
Neu Suche nach neuen JTL Shop Projekten Dienstleistung, Jobs und Ähnliches 0
Neu JTL Shop und Wawi auf einem Server möglich? Installation / Updates von JTL-Shop 0
Neu SOFORT Überweisung Classic mit JTL Shop 5.4 - Kompatible? Plugins für JTL-Shop 0
Neu jtl shop kategorien links anordnen Allgemeine Fragen zu JTL-Shop 4
Neu bestehenden alten JTL Shop neu installieren (Leichen beseitigen) Installation / Updates von JTL-Shop 0
Neu Drastischer Besucherrückgang und Umsatzeinbruch nach Update auf JTL Shop 5 - Bitte um Hilfe Allgemeine Fragen zu JTL-Shop 5
Workflow trägt Funktionsattribut nicht im JTL-Shop ein JTL-Wawi 1.9 0
Neu Bestellbestätigung aus JTL SHOP mit Lieferadresse Dienstleistung, Jobs und Ähnliches 0
Neu Fehlerhafter Abgleich wegen angeblich mehr als 500 Artikel in der CFE von JTL-Shop 5 Allgemeine Fragen zu JTL-Shop 18
Neu JTL Shop und SEO bei unterschiedlichen Sprachen aber gleichen Artikelnamen Betrieb / Pflege von JTL-Shop 12
Neu Installation von JTL-Shop 5.4.1 auf Ubuntu Server 24.04.2 LTS Installation / Updates von JTL-Shop 6
Neu Kein Zugriff von Wawi auf JTL-Shop, auf lokalem Apache-Server gehostet Installation / Updates von JTL-Shop 8
Neu Geänderte Versandinformationen im JTL-Shop 5 werden nicht angezeigt. Allgemeine Fragen zu JTL-Shop 2
Neu JTL Shop leere Startseite nach OPC Betrieb / Pflege von JTL-Shop 5
Neu Shopware-Kunden nach Import automatisch im JTL-Shop als registriert markieren Umstieg auf JTL-Shop 7
Neu JTL Shop 5 Mail Vorlagen anpassen Allgemeine Fragen zu JTL-Shop 1
Neu JTL-Shop 5 Whatsapp Business Produktkatalog Export anlegen Allgemeine Fragen zu JTL-Shop 0
Neu CSV per FTP vom Lieferanten JTL Shop Hosting Schnittstellen Import / Export 3
Neu JTL Shop 5 -> Anzeigen 2. Tab ... Allgemeine Fragen zu JTL-Shop 1
JTL x Shop Apotheke MeetUp am 27.03.25 Messen, Stammtische und interessante Events 1
JTL Shop 5 auf bestehender Domain unter anderen Pfad neu aufsetzen und dann vom alten JTL Shop 4 auf den neuen umschalten Einrichtung JTL-Shop5 5
Neu Newsletter Abonnenten export aus dem JTL Shop? Allgemeine Fragen zu JTL-Shop 1
Neu Automatische Übersetzungen JTL Shop Plugins für JTL-Shop 1
Neu JTL Shop Anzeige Fehler Amazon Pay Button und Paypal Pay Button Allgemeine Fragen zu JTL-Shop 3
Neu Inhalt / Menge aus der Wawi im JTL Shop anzeigen / ohne Funktion ? Allgemeine Fragen zu JTL-Shop 2
Neu Cloudflare und JTL Shop - Problem oder zu empfehlen? Allgemeine Fragen zu JTL-Shop 11
Neu JTL Shop Google Merchant Center Allgemeine Fragen zu JTL-Shop 2
Neu XAMPP, JTL Wawi -> Artikel werden nicht im Shop angezeigt. Allgemeine Fragen zu JTL-Shop 1
Neu Update Shop von 5.2 auf 5.3 und 5.4, Schritt 2: JTL-Shop-Dateien aktualisieren Installation / Updates von JTL-Shop 42
Neu Suchen Freelancer für Support JTL wawi und shop sowie Anbindung an die Markplätze Dienstleistung, Jobs und Ähnliches 1
Neu Besten Hosting-Anbieter für Wawi und JTL-Shop Starten mit JTL: Projektabwicklung & Migration 10
Neu Spezielle Preise für Kundengruppen im JTL-Shop Allgemeine Fragen zu JTL-Shop 3
Neu JTL Connector Error: 20 - Invalid shop url. https://meineseite.com does not point to a shopware 6 instance Shopware-Connector 2
Neu Emails senden aus der Wawi an Bestellungen via Gastkonto (JTL Wawi 1.5.55.5 / JTL Shop 4.05) Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 1
Neu Wechsel von CFE Shop ( Hosting bei JTL) zu SE Installation / Updates von JTL-Shop 5
Neu JTL-Shop als B2B Shop konfigurieren Einrichtung JTL-Shop5 1
Neu Gesamtkosten Hosting JTL-Shop (Plus | SE) Starten mit JTL: Projektabwicklung & Migration 6
Neu GELÖST: JTL Shop Version 5.4: Bild-Kopierschutz eingebaut? Gelöste Themen in diesem Bereich 9
Neu GPSR werden im JTL Shop 4 nicht angezeigt Allgemeine Fragen zu JTL-Shop 8
Neu Abgleich mit JTL-Shop nur neue oder geänderte Bilder Onlineshop-Anbindung 9
Neu JTL-Shop Logout nach wenigen Minuten MFA / 2FA umgehen JTL-Shop - Ideen, Lob und Kritik 0
Neu JTL Shop 5.3.x HTML Portlet gesucht / Tag Stripping im Rich Text Portlet deaktivieren Allgemeine Fragen zu JTL-Shop 5
Neu Bericht / Status E-Mails aus dem JTL Shop Allgemeine Fragen zu JTL-Shop 1
Neu PHP - MySQL Konfiguration am Server für JTL Shop 5 Allgemeine Fragen zu JTL-Shop 1
Neu JTL Search legt kompletten Shop lahm JTL-Search 10
Warnhinweise und Sicherheitsinformationen jtl-Shop und eBay JTL-Wawi 1.9 1
Neu JTL-Wawi 1.9.6.5 - GPSR: Bei Amazon wird der Hersteller falsch gefüllt und die Verantwortliche Person ist LEER - eBay/JTL-Shop sind korrekt Amazon-Anbindung - Fehler und Bugs 27
Neu JTL 1.9.7.0 | Amazon Aufträge bekommen keine Auftragsnummer mehr Amazon-Anbindung - Fehler und Bugs 0

Ähnliche Themen