Hier das geniale Resultat:
Time elapsed: 0.127586126328 seconds for 379 categories.
Statt 2,3 Sekunden werden also jetzt nur noch 0,13 Sekunden für den Aufbau der Kategorien-Auswahlbox “verbraten”, dieses Verfahren ist also 17 mal schneller als das Standard-OXID-Verfahren!
Bei den Zeitmessungen ist mir so auf die schnelle ein schwerer gedanklicher Fehler unterlaufen:
ich habe nämlich die Zeit für den Aufbau des Kategorien-Baums auf dem Kundenserver (2,3 Sekunden) verglichen mit der Zeit des neuen Verfahrens auf meinem lokalen Rechner (0,13 Sekunden)!
Auf meinem Rechner benötigt der Aufbau des Kategorien-Baums mit dem OXID-Standard-Verfahren aber ganze 6.9 Sekunden, also 3 mal so lange wie auf dem Kundenserver! (Muss mir wohl mal einen neuen Rechner gönnen!)
Das bedeutet aber im Klartext:
das neue Verfahren ist nicht nur 17 mal, sondern glatte 50 mal(!!!) schneller, als das Standard-Verfahren!
Was natürlich richtig spannend ist!
Ich habe der “oxcategories”-Tabelle noch einen weiteren Index spendiert (über “oxtitle”), damit lassen sich weitere 10% Zeit einsparen.
Bei sogar etwas verbesserter Leistung (die Haupt-Kategorien werden in der Auswahlbox als “optiongroup” optisch hervorgehoben…).
Das Erstellen der Kategorien-Auswahlbox ist aber nur ein Aspekt bei der Erstellung des kompletten Kategorienbaums.
Für fortgeschrittene Menü-Lösungen (Flyout- und Tabbed-Menüs) benötigt man zusätzlich für jede Kategorie den (SEO-)Link, sowie die Zuordnung aussagefähiger CSS-Klassen, um die Menüeinträge gezielt “stylen” zu können.
Bei den SEO-Link ergibt sich jetzt aber das Problem, dass die vorhandenen Methoden zur Ermittlung der Links von einem vorhandenen Kategorien-Objekt ausgehen, was aber jetzt nicht mehr vorhanden ist!
Konsequenz: um hier zum Ziel zu kommen, musste ich die SEO-Links auch direkt aus der Datenbank ermitteln.
Mit Erstellung der Links und CSS-Klassen ergibt sich dann das folgende Ergebnis:
Time elapsed: 0.258759975433 seconds for 379 categories.
D.h., die Zeit für die Erstellung des kompletten verlinkten Menübaums steigt um ca. 0,13 Sekunden…
Die Testausgabeseite für diesen Fall findet sich hier: http://www.powertemplate.de/kunden/oxid/info/categories_timing_link.html
Für das OXID-Standard-Verfahren gibt es dafür erst mal keine direkte Vergleichszeit, da ein verlinkter Kategorien-Baum nicht erstellt wird…
Daher habe ich in das Template zum Aufbau der Kategorienauswahlliste ein “[{assign var=“link” $ocat->getLink()}]” eingefügt, um die Linkberechnung zu erzwingen…
Die gesamte Ausführungszeit erhöhte sich dabei um ca. 0,2 Sekunden.
Das neue Verfahren hat dafür ca. 0,13 Sekunden mehr gebraucht, so dass das auch hier ca. 30% schneller ist…