Hallo,
ich optimiere zur Zeit mal wieder fleissig an meinem CMS/Shop-System und bin jetzt in einer Sackgasse angekommen.
Der Shop (z.B. unter
http://www.elektroparts24.com) läuft soweit ganz gut und ist auch, meines Erachtens nach, recht performant. Einziger Wehmutstropfen in Sachen Performence ist die Navigation.
Auf der oben genannten Site, ist der Shop mit ca. 30.000 Artikeln gefüllt, das CMS-System verwaltet etwa 8 Seiten. Der Verzeichnisbaum auf der linken Seite funktioniert so, dass ein Klick auf eine Warengruppe, die Warengruppen anzeigt, die der angeklickten untergeordnet sind.
Das ganze ist, mehr oder weniger als "schnelle Lösung" folgendermassen aufgebaut:
In einer Datenbank sind die Warengruppen gespeichert. Jede Warengruppe ist entweder eine Hauptgruppe, oder eine Untergruppe einer anderen Warengruppe.
Klickt der User nun auf eine Warengruppe, schaut das System nach, ob diese Gruppe eine Untergruppe ist. Wenn ja, wird die Hauptgruppe gesucht und die Abfrage geht rekursiv weiter, bis die Hauptgruppe ermittelt ist.
Wenn die Hauptgruppe ermittelt ist, wird der Verzeichnisbaum aufgebaut. Jede Hauptgruppe wird nacheinander im Verzeichnisbaum eingefügt, bis die aktive, also gerade angelickte Gruppe erreicht ist. Nun wird ermittelt, welche Warengruppen dieser untergeordnet sind. für jede Untergruppe wird geschaut, welche, der untergruppe untergeordnet sind... rekursiv, bis die letzte Ebene erreicht ist.
Hört sich kompliziert an, ist es auch in der perligen Umsetzung :D
Wie ich finde, ist das ganze Navigatiopns-Gedöns alles andere als optimal oder perfomant, erfüllt aber seine leidige Bestimmung.
Das ganze Navigationsgezumpel ist mit nur 1(!) einzigen Eintrag in der Tabelle der Warengruppen realisiert worden. Dieser eine Eintrag ist die warengruppenID der übergeordneten Gruppe, oder '0'.
Hat irgendwer ein paar Tipps, wie ich das ganze flotter bekomme oder ist wer der Meinung, dass was ich mir da zusammengezimmert habe ist absoluter Bullshit und weiss wie es "richtig" geht?
Bin für jede Idde, jeden Tipp oder Hinweis offen.
Grüße,
Stefan
Ein Weiser gibt nicht die richtigen Antworten, sondern er stellt die richtigen Fragen.