WBCE CMS Forum

WBCE CMS – Way Better Content Editing.

Du bist nicht angemeldet.

#1 27.01.2020 16:42:17

florian
Administrator

[erledigt] Massive Performance-Einbußen durch CORRECT_MENU_LINKS

Durch die Angabe von define('SM2_CORRECT_MENU_LINKS',true); in der config.php können ja bei Menü-Links statt der Menülink-Seiten-URLs die richtigen URLs, also die der Zielseiten, ausgegeben werden.

Leider musste ich gerade feststellen, dass das Feature zu massiven Perfomance-Einbußen führt, da dadurch scheinbar doch recht viele Datenbankabfragen erfolgen oder ähnliches. Jedenfalls gibt es auf der betr. Seite mit dieser Einstellung immer eine spürbare Verzögerung von ca. 3 Sekunden, bis eine Seite erscheint.

Das lässt sich auch belegen:
Ohne SM2_CORRECT_MENU_LINKS: Google PageSpeed-Index 91/100 (Desktop)
Mit SM2_CORRECT_MENU_LINKS: Google PageSpeed-Index 79/100 (Desktop)

Die Website umfasst ingesamt 169 Seiten, davon sind nur 9 Menülinks. Es ist also nicht so, dass diese inflationär verwendet würden.
WBCE 1.4.0, PHP 7.3.10, Provider ist Domainfactory


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#2 11.06.2020 21:29:53

bernd
Developer

Re: [erledigt] Massive Performance-Einbußen durch CORRECT_MENU_LINKS

Hab mir das auf Wunsch von Colinax grade mal angeschaut.
Das Problem sind nicht die Menu-Links (bzw. deren Anzahl), sondern eher die Menge der Seiten.

So wie das momentan implementiert ist (sehr spät in der Verarbeitungskette erst direkt im Output) wird halt jeder komplette Menu-String durch die Funktion sm2_correct_menu_links gejagt und verwuschtelt. Bei 9 Menu-Links heißt das dann auch für jede Seite 9 Schleifendurchläufe innerhalb der Funktion.

Das trägt dann insgesamt halt schon ordentlich auf.

'ne wirkliche Lösung dafür habe ich aber (noch) nicht  hmm

@florian:
kannst du mal bitte testen, wenn du Zeile ~40 in der sm2_formatter.php so änderst

if(defined('SM2_CORRECT_MENU_LINKS') && SM2_CORRECT_MENU_LINKS == true && stristr($aString, 'menu-link')){

ob das
a.) eine Verbesserung bringt
b.) irgendwelche Nebenwirkungen hat

Beitrag geändert von bernd (11.06.2020 22:01:26)


... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...

Offline

Liked by:

stefanek

#3 12.06.2020 06:55:30

florian
Administrator

Re: [erledigt] Massive Performance-Einbußen durch CORRECT_MENU_LINKS

Das führt leider dazu, dass die Links nicht ersetzt werden. Die Performance ist zwar top, aber statt <a href="pfad/zur/zielseite.php">  steht dann wieder <a href="/url/des/menulinks"> auf der Seite.


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#4 12.06.2020 07:08:14

bernd
Developer

Re: [erledigt] Massive Performance-Einbußen durch CORRECT_MENU_LINKS

Komisch ... grade nochmal getestet funktioniert hier lokal Tiptop?!?
Du hast aber schon das SM2_CORRECT_MENU_LINKS wieder in der config.php drin?


... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...

Offline

#5 12.06.2020 07:32:32

florian
Administrator

Re: [erledigt] Massive Performance-Einbußen durch CORRECT_MENU_LINKS

Ja, hatte ich, sind eventuell noch weitere Anpassungen erforderlich?
Ich hatte mich auch ehrlich gesagt schon vor dem Testen gefragt, wo "menu-link" in $aString vor- bzw. herkommen sollte, denn an sich weiß show_menu2 doch gar nicht, um was für ein Seitenmodul es sich bei dem jeweiligen Link handelt?


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#6 12.06.2020 07:38:35

bernd
Developer

Re: [erledigt] Massive Performance-Einbußen durch CORRECT_MENU_LINKS

Uuups ... dumm -> dümmer -> ich ...
Funktioniert natürlich perfekt, wenn der Menu-Link auch "Menu Link" heißt  ops


... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...

Offline

#7 12.06.2020 08:34:55

florian
Administrator

Re: [erledigt] Massive Performance-Einbußen durch CORRECT_MENU_LINKS

Naja, der Ansatz ist ja nicht schlecht.
Das Menulink-Modul müsste - wenn CORRECT_MENU_LINKS==true - in den Dateinamen irgend ein eindeutiges Erkennungsmerkmal schreiben, z.B. modmenulink_ voranstellen.*
Die Funktion output prüft dann auf dieses Erkennungsmerkmal und führt dann ggf. output sm2_correct_menu_links aus.

(* Pferdefuß: bei rückwirkender Implementierung, also wenn es schon Menülinkseiten gibt, müsste der Dateiname bzw. das Accessfile nachträglich umbenannt werden, und, sollte sich der Seitenbetreiber es anders überlegen und CORRECT_MENU_LINKS wieder rausnehmen, müsste natürlich auch modmenulink_ wieder entfernt werden. Und der Seitenbetreiber darf nicht auf die Idee kommen, selbst den Menülink-Seiten-Dateinamen zu ändern.)

Andere Möglichkeit: Das ganze findet gar nicht in der sm2_formatter statt, sondern wird als Outputfilter realisiert (dann natürlich ohne Konstante CRRECT_MENU_LINKS). D.h. wenn die Seite rausgeschrieben worden ist, nimmt sich der OPF das Menü vor, und prüft, ob darin Menülinks sind und ersetzt diese durch die eigentlichen Links. Das ist leider aufwändig, da müssen initial ja die Tabellen pages, sections und mod_menu_link abgefragt werden, um überhaupt herauszubekommen, was nun ein Menülink ist und wo der eigentlich hinzeigen soll. Vermutlich würde sich das also auch nicht gerade günstig auf die Performance auswirken.

Erschwerend kommt noch hinzu, dass in der google_sitemap.php natürlich die Menülinks stehen bleiben, und ob sich das ganze dann mit shortURL verträgt, ist auch fraglich...

Das ist dann wohl also doch ein größeres Projekt.


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#8 12.06.2020 09:12:53

bernd
Developer

Re: [erledigt] Massive Performance-Einbußen durch CORRECT_MENU_LINKS

Ich glaube als Outputfilter ist da nichts gewonnen, da müßte ja auch wieder das ganze Menu durchgehechelt werden.

Man müsste das ganze viel eher im Ablauf bearbeiten, meine Idee wäre an der Stelle anzusetzen an der die Funktion show_menu2 sich das $page-Array zusammenbastelt, das ist auch so ziemlich die einzige Stelle an der die jeweiligen page ids verfügbar sind...


... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...

Offline

#9 12.06.2020 10:36:19

stefanek
Developer

Re: [erledigt] Massive Performance-Einbußen durch CORRECT_MENU_LINKS

Ich denke Florian's Ansatz, es mit einem OpFilter zu machen ist gar nicht so schlecht:

1) Zuerst würde man in der DB nachschauen, ob Menu-Link überhaupt in Verwendung ist.
2) Wenn ja, ein Array erstellen mit allen Seiten, die Menu-Link verwenden, den AusgangsURL als KEY und den ErsatzURL als VALUE.
3) Im Seiten-Output per RegEx die URLs ersetzen.

Gruß,
Christian


“Success is the progressive realization of a worthy ideal.” ― Earl Nightingale

Offline

#10 12.06.2020 10:56:32

bernd
Developer

Re: [erledigt] Massive Performance-Einbußen durch CORRECT_MENU_LINKS

O.k.
ich bin dem ursprünglichen Gedanken "treu" geblieben (vielleicht bischen "von hinten durch die Brust ins Auge"):
- in der Funktion show_menu2 werden die menu_link id's geholt
- bei einem Match mit einer page id wird ein weiterer flag im page-Array gesetzt
- an Hand dieses Flags wird in der Funktion startItem eine zusätzliche Klasse "sm2-is-menulink" hinzugefügt
- diese Klasse dient dann in output als Weiche für sm2_correct_menu_links

Da das Hinzufügen der Klasse unabhänig von SM2_CORRECT_MENU_LINKS ist, hat man als netten Nebeneffekt gleich noch eine Klasse verfügbar um evtl. Menu-Links CSS-mäßig hervorheben zu können...

Beitrag geändert von bernd (12.06.2020 11:01:22)


... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...

Offline

Liked by:

klawin

#11 12.06.2020 19:48:20

florian
Administrator

Re: [erledigt] Massive Performance-Einbußen durch CORRECT_MENU_LINKS

So, getestet. Hervorragend! Wird sogleich committet!


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#12 12.06.2020 19:55:18

bernd
Developer

Re: [erledigt] Massive Performance-Einbußen durch CORRECT_MENU_LINKS

Wenns funktioniert vielleicht noch die "EXPERIMENTAL" Kommentare rausnehmen?

Was mir grade durch den Kopf geht:
Wäre es vielleicht sinnvoll das Sitemap-Modul auch entsprechend anzupassen, damit dort die Links mit dem Menu übereinstimmen?


... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...

Offline

#13 12.06.2020 20:03:06

florian
Administrator

Re: [erledigt] Massive Performance-Einbußen durch CORRECT_MENU_LINKS

Ja


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#14 12.06.2020 21:16:38

bernd
Developer

Re: [erledigt] Massive Performance-Einbußen durch CORRECT_MENU_LINKS

Sodele,
anbei das überarbeitete Sitemap-Modul, ging schmerzfreier als befürchtet.
Dann wäre wohl noch die google_sitemap, aber da gucke ich momentan noch drauf wie monkey ...


... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...

Offline

Liked by:

colinax, klawin

#15 12.06.2020 21:33:19

colinax
Developer

Re: [erledigt] Massive Performance-Einbußen durch CORRECT_MENU_LINKS

Die Sitemap 4.0.9  sowie die "EXPERIMENTAL" Kommentare entfernen, sind jetzt auf GitHub.

Offline

#16 12.06.2020 21:36:29

bernd
Developer

Re: [erledigt] Massive Performance-Einbußen durch CORRECT_MENU_LINKS

Sehe grade in der google_sitemap.php werden Menu-Links sowieso nicht verwurschtelt.

// Get all pages from db except of the module menu_link

Also kein Handlungsbedarf.


... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...

Offline

Liked by:

colinax

#17 12.06.2020 21:42:38

colinax
Developer

Re: [erledigt] Massive Performance-Einbußen durch CORRECT_MENU_LINKS

thumb_up thumb_up

Dann setze ich dass mal auf erledigt.

Offline

#18 12.06.2020 23:33:03

stefanek
Developer

Re: [erledigt] Massive Performance-Einbußen durch CORRECT_MENU_LINKS

Bravo Bernd! Und danke.

Gruß,
Christian


“Success is the progressive realization of a worthy ideal.” ― Earl Nightingale

Offline

Fußzeile des Forums

up