redaxo / redaxo4

REDAXO 4
https://redaxo.org
41 stars 27 forks source link

rex_navigatio Performance/Ladezeit #381

Closed robo-wg closed 4 years ago

robo-wg commented 9 years ago

Hinweis: Mir ist aufgefallen, dass die rex_navigation mit 3 Ebenen z.B. $nav->get(0,3,TRUE,TRUE) ansch. die Seitenladezeit merklich beeinflusst (aktuell Website mit ca. 95 Seiten). Einen "Performance-Fresser" denke ich mit dem wiederholten Aufrufen der Funktion rex_getUrl() durch $nav->getURL() gefunden zu haben und zwar in rex_getURL() Zeile 97 $ooa = OOArticle....

Ich denke eine gute Idee wäre es, in der class rex_navigation eine eigene Methode bereitzustellen, da hier der Artikelname ja bereits bekannt ist und nicht wie in rex_getURL() nochmal ermittelt werden müsste...

LG Robert

staabm commented 9 years ago

Hi Robert,

könntest du mit einem Profiler (z.b. http://blackfire.io) messungen für deinen Fall durchführen. Aufgrund dieser Vermutungen kann man nur wenig tun.

Grüße, Markus

robo-wg commented 9 years ago

Hallo Markus,

hab meine Messungen auf lokalem Server (nicht Internet) und mittels Firebug (Netzwerk -> HTML) gemacht.

Habe ca. 20 mal je Einstellung die gleiche Seite aufgerufen und folgende Zeiten gemessen:

Mit $nav->get(0,3,TRUE,TRUE) : Größe HTML = 4,6 KB; Ladezeit ~ 880ms (+/- 15ms)

Mit $nav->get(0,3,FALSE,TRUE) :: Größe HTML= 3KB, Ladezeit ~ 350ms (+/- 15ms)

Auf der Suche nach der Ursache hat $ooa = OOArticle.... (Zeile 97) am meisten Zeit geschluckt... Hoffe ich kann hier mit meiner Erkenntnis vielleicht helfen... Möchte mich hier wiederholt bei allen Redaxo-Entwicklern für eure tolle Leistung bedanken.

staabm commented 9 years ago

ok, danke für die Infos. Wir müssen schauen wer Zeit hat hier genauer nachzuforschen.

Eine Frage noch: Wieviele Zeilen hat deine rex_artikel Tabelle?

jdlx commented 9 years ago

Zu dem Thema gabs iirc letztes Jahr einen Forums Thread.. mit ähnlichen Beobachtungen.

Mir ist aufgefallen, dass in einer normalen Redaxo Installation das generieren der Navigation ca. 20% bis 30% der Script Zeit ausmacht, sobald die Navigation mehr als 1 Ebene hat.

http://www.redaxo.org/de/forum/allgemeines-f27/eigenes-last-modified-im-header-und-allgemeine-performance-t18654.html#p102632

frag-seb commented 9 years ago

Hallo zusammen, wenn ich mir das anschaue würde ich sagen das ist kein Problem von rex_navigation sondern eher ein Problem das die Datenmenge min größer geworden ist. Das bedeutet das, dass Protokoll ein Packt mehr versenden muss, eine Übertragung (handshake) dauert in der Regel 65ms -70ms. Man könnte also nur versuchen die Datenmenge zu reduzieren. Grüße Jochen

robo-wg commented 9 years ago

@frag-seb: Das HTML dieser githubsite hat ca. 12,9KB und lädt aktuell in 336ms / vs wie oben beschrieben 4,6 KB 880ms. Damit mein ich nicht CSS, JS, Bilder sonder nur das HTML braucht 880ms (Messung mit Firebug).

@jdlx: Den hab ich auch gefunden... Wollte aber nicht nochmal im Forum damit starten; falls es der war: http://www.redaxo.org/de/forum/templates-navigationen-f29/navigation-ladezeiten-t17820.html

@staabm: Bin mir jetzt nicht sicher wie das gemeint ist aber ich hab je Kategorie immer nur einen Artikel. Die Navi, welche die Ladezeit so beeinträchtigt ist mit Kategorien nach folgendem Schema aufgebaut:

jdlx commented 9 years ago

falls es der war: …

Nein, siehe oben.. ansonsten: was konkrete Messungen angeht ist die reine page load Zweit zwar nicht gänzlich irrelevant, aber doch mehr ein Schätzeisen.. zumal man unbedingt genug Messungen machen muß um die Streuung so weit es geht aufzufangen. Echtes Profiling mit geeigneten tools wär natürlich das beste, ist aber leider mehr oder minder aufwändig..

Solltest du dennoch gierig genug sein dem Thema per profiling auf die Spur kommen zu wollen, würde ich empfehlen ein frisches REX mit der Demo zu nehmen, selbige hinsichtlich der structure entsprechend um Artikel/Kats in die Breite und Tiefe erweitern, und im template nichts weiter als den Aufruf der rex_navigation zu notieren um weniger "noise" im profiling zu haben. Gleichzeitig könnte man dann einen dump dieser spezifischen Testsite öffentlich stellen zwecks möglicher Nachvollziehbar/Vergleichbarkeit..

robo-wg commented 9 years ago

Hab im Moment wenig Zeit, aber bei Gelegenheit kann ich das mal machen. Beste Grüße

staabm commented 9 years ago

@robo-wg danke, die angaben oben sind ausreichend

robo-wg commented 9 years ago

Hallo. Ich nochmal. Hab die Seite mit der besagten Navigation jetzt im "großen Netz" bei einem guten Hosting Provider laufen. Auf meinen Wunsch wurde dort auf einen neuen Server umgestellt. Die Seitenladezeit ist nach Umstellung auf den neuen Server viel besser (imo ~400ms) da ansch. bessere HW als die in meinem LAN (hab aber auch online kaum Zugriffe und der Server ist somit nicht wirklich ausgelastet...). Angaben über Ladezeit hängen immer stark von der Hardware ab, das ist mir klar. Mir ist nur der große Unterschied aufgefallen: 880ms (1 Ebene) vs 350ms (3Ebenen) in meiner Entwicklungsumgebung (LAN mit DS713+). Alle Zeitmessungen erfolgten mittels Firebug und somit ohne Gewähr :-)