molily: Ajax-Oberfläche und APIs für das Forum?

Hallo zusammen,

ich hatte vor kurzem ein Script vorgestellt, dass dem My-Anwendern dieses Forums neue Antworten auf eigene Beiträge im Seitenkopf anzeigen kann.

Ich denke, das ist nur eine Möglichkeit, wie man das Forum mit Javascript nutzbarer gestalten könnte. Vor einigen Jahren hatte Zapp viele weitere Möglichkeiten aufgezeigt. In Zeiten von Ajax sollte man noch viel mehr machen können.

Das obige Script durchläuft ziemlich aufwändig den Threadbaum auf der Forumshauptseite und extrahiert die relevanten Daten über die Postings. Da das viele ähnliche Scripte machen würden, dachte ich an eine Art Framework, dass diese Funktionalität zur Verfügung stellt. Auf dessen Basis kann man dann Scripte wie das obige implementieren.

Ich habe dazu mit zwei Modellen experimentiert:

1. Das Traverse-Modell. Man hat sich das wie SAX bei XML vorzustellen. Man registriert Handler, die bei gewissen Parse-Ereignissen aufgerufen werden. Dann wird der Thread-/Postingbaum durchlaufen und bei jedem Thread bzw. Posting die Handler mit den jeweiligen extrahierten Daten aufgerufen.

Vorteil: Man kann beim Laden viele Scripte mit unterschiedlichen Aufgaben einbinden, die mehrere Handler registrieren. Der DOM-Baum wird dann beim onload bzw. DOMContentLoad einmal traversiert und alle Scripte, die beim Laden der Seite aktiv werden, bekommen die benötigten Daten. Wenn während der »Laufzeit« noch einmal ein Traversieren nötig ist, so kann es erneut manuell angestoßen werden.

Nachteil: Einige. Eine Logik wie »suche neue Antworten auf eigene Postings« ist nicht so einfach umzusetzen. Es sei denn, man arbeitet letztlich doch wieder direkt im DOM. Man kennt dies von SAX.

2. Das Alternativ-DOM. Die Treadliste wird beim load bzw. DOMContentLoad einmal durchlaufen und alle Daten werden extrahiert und in einer riesige JavaScript-Objektstruktur gespeichert. Es gibt dann Thread-Objekte und Posting-Objekte und alle sind miteinander reziprok verknüpft. Es gibt Listen und Indizes, man kann Threads und Postings nach bestimmten Kriterien suchen und hat wiederum Referenzen auf die entsprechenden DOM-Elementknoten.

Vorteil: Damit kann man sehr einfach und schnell Aufgaben wie die obige lösen und es sind viele andere denkbar. Das Alternativ-DOM kann man mit Abstraktions-Funktionen ausstatten, sodass man die gängigen Änderungen ohne direkten Eingriff ins DOM vornehmen kann.

Nachteil: Das Aufbauen der riesigen tausendfach verwobenen Objekt- und Arraystruktur beim onload ist elend lahm und verbraucht einigen Speicher.

Nun gehe ich bei diesen Modellen davon aus, dass mit der jetzigen Forumshauptseite in XHTML gearbeitet. Ich denke aber darüber nach, wie man das Forum ajaxifizieren könnte. Anstatt der HTML-Struktur gibt es z.B. eine XML-Struktur, die mit XSLT in das gewünschte XHTML transformiert wird. JavaScript dient als Kitt und hat idealerweise Zugriff auf die XML-Struktur, mit der es einfacher arbeiten kann, und das letztliche XHTML-Dokument. Das XML-Dokument wird dann lediglich mit JavaScript »angereichert« und es werden einige Indizes und Referenzen angelegt. Die letztlichen Operationen können immer »live« am XML-DOM durchgeführt werden, Ergebnisse von Abfragen sowie Änderungen werden immer wieder päckchenweise über das XHTML-DOM dargestellt.

Es sind natürlich auch andere Formate denkbar. Etwa die Forumsseite direkt im JSON-Format, aus der dann der XHTML-Code erzeugt wird. Da müsste man aber die Performance messen, denn es ist sicher langsamer, den langen JSON-String in eine gigantische Objektstruktur zu parsen und mit JavaScript in XHTML zu überführen, als die Objektstruktur auf Basis von XHTML nachträglich aufzubauen. Es wäre auch die Kombination eines servergenerierten XHTML-Dokuments mit eingebauter JSON-Struktur denkbar. Oder XML plus XSLT, das XHTML und JSON gleichzeitig erzeugt. Und so weiter.

Letztlich wäre eine serverseitige REST-API sinnvoll, die es erlaubt, Thread- und Postingdaten gezielt abzurufen und einige Abfragen serverseitig durchzuführen. Ausgabeformate könnten entsprechend JSON(P), XML und auch XHTML sein. Posting senden sowie Vorschau wären sicher auch umsetzbar.

Soweit zu den theoretischen Überlegungen über die Grundlagen. Ich habe mir noch nicht ausgemalt, welche Möglichkeiten ein solches Framework bieten würde. Jedenfalls sollten sich viele Funktionen des ursprünglichen Zapp-Scriptes einfach lösen lassen. Außerdem könnte man neue schlanke, angepasste Oberflächen für das Forum schreiben. Eine Anbindung an andere Services (etwa Community-Features wie Visitenkarten, weiteren Bewertungs- und Statistik-Systeme, Bookmarking, Tagging usw.) wäre auch kein Problem.

Was haltet ihr von diesen Gedanken? Ich möchte auch ganz konkret wissen, an welchen Stellen ihr eine weitere Ajaxifizierung sinnvoll fändet und welche Dienste man ins Forum integrieren könnte. Das Zapp-Script liefert ja bereits einige vorzügliche Ideen. Ich könnte mir etwa vorstellen, dass sich die Hautpseite und die Postingansicht automatisch aktualisieren, indem sie regelmäßig pollen und so neue Postings abrufen und in den DOM-Baum einmontieren.

Mathias

  1. Gruss Mathias,

    Du hast ein interessantes und technisch reizvolles wie komplexes
    Thema mal wieder nicht nur umfassend analysiert sondern eben
    auch, wie es so Deine Art ist, schon fast alle wichtigen Antworten
    hinzugepackt, so daß es mir schwerfällt, zusätzlich Gehaltvolles
    beizusteuern, ohne zu repetieren - also:

    1. Das Traverse-Modell.  ...

    Diesen Ansatz würde ich ebenfalls verwerfen, denn ...

    ... da Du bereits in den Kategorien einer potenten clientseitigen
    »SELFForum-JavaScript-Api« denkst, drängt sich für mich genau
    eine der von Dir vorgeschlagenen XML/XSLT/JavaScript-Lösungen
    geradezu auf.

    Dabei finde ich den Ansatz der Variante »XSL-Transformation
    erzeugt aus Forums-XML sowohl die (X)HTML-Struktur des
    Dokuments als auch eine geeignete JSON-Hirarchie« unter
    folgenden Gesichtspunkten am vielversprechendsten:

    Themen, Threads, Postings, Nutzer etc. sind allerspätestens
    unmittelbar vor dem finalen onload-event schon durch das
    von Dir sogenannte »Alternativ-DOM« abgebildet/referenziert.

    Wie Du schon sagtest, entfällt damit dieses hier:

    Nachteil: Das Aufbauen der riesigen tausendfach verwobenen
    Objekt- und Arraystruktur beim onload ist elend lahm ...

    ... und zumindest für das Endergbnis JSON ist jenes schon
    wieder vertretbar:

    ... und verbraucht einigen Speicher.

    Im Idealfall wird der Server auch noch um die Transformationen
    entlastet. Diese Arbeit übernehmen die modernen Clients gleich
    selber.

    Es sind natürlich auch andere Formate denkbar. Etwa die Forumsseite
    direkt im JSON-Format, aus der dann der XHTML-Code erzeugt wird.

    Das war Spaß, oder ?-)

    Außerdem habe ich folgendes nicht richtig verstanden:

    ... wie man das Forum ajaxifizieren könnte. Anstatt der HTML-Struktur
    gibt es z.B. eine XML-Struktur, die mit XSLT in das gewünschte
    XHTML transformiert wird. JavaScript dient als Kitt und hat idealerweise
    Zugriff auf die XML-Struktur, ...

    Ich dachte bisher immer, daß bei clientseitiger Transformation nur auf das
    generierte DOM und nicht auch noch auf das Ausgangs-DOM zugegriffen
    werden kann. Lieg ich da falsch?

    ... mit der es einfacher arbeiten kann, und
    das letztliche XHTML-Dokument. Das XML-Dokument wird dann lediglich
    mit JavaScript »angereichert« und es werden einige Indizes und
    Referenzen angelegt. Die letztlichen Operationen können immer »live«
    am XML-DOM durchgeführt werden, Ergebnisse von Abfragen sowie
    Änderungen werden immer wieder päckchenweise über das XHTML-
    DOM dargestellt.

    bis später - peterS. - pseliger@gmx.net

    --
    "Because objects in JavaScript are so flexible, you will want to think differently about class hierarchies.
    Deep hierarchies are inappropriate. Shallow hierarchies are efficient and expressive." - Douglas Crockford
    ie:( fl:) br:> va:( ls:& fo:) rl:| n3;} n4:} ss:} de:µ js:} mo:? zu:]
    1. Hallo,

      Dabei finde ich den Ansatz der Variante »XSL-Transformation
      erzeugt aus Forums-XML sowohl die (X)HTML-Struktur des
      Dokuments als auch eine geeignete JSON-Hirarchie« unter
      folgenden Gesichtspunkten am vielversprechendsten:

      Ich werde mal versuchen, eine Reihe von XML-Templates zu schreiben alternativ zu den jetzigen (X)HTML-Templates. Christian Seiler hilft mir gerade dabei, ich melde mich dann noch einmal.

      Es sind natürlich auch andere Formate denkbar. Etwa die Forumsseite
      direkt im JSON-Format, aus der dann der XHTML-Code erzeugt wird.
      Das war Spaß, oder ?-)

      Nein, wäre das denn Overkill? Google hat sogar eine XSLT-Implementierung in JavaScript, dagegen ist eine JSON-zu-XHTML-Konvertierung extrem einfach, nahm ich an.... ;)

      ... wie man das Forum ajaxifizieren könnte. Anstatt der HTML-Struktur
      gibt es z.B. eine XML-Struktur, die mit XSLT in das gewünschte
      XHTML transformiert wird. JavaScript dient als Kitt und hat idealerweise
      Zugriff auf die XML-Struktur, ...
      Ich dachte bisher immer, daß bei clientseitiger Transformation nur auf das
      generierte DOM und nicht auch noch auf das Ausgangs-DOM zugegriffen
      werden kann. Lieg ich da falsch?

      Auf das Problem war ich auch gestoßen. Ich weiß nicht, ob es sich lösen lässt, jedenfalls dachte ich mir: Es gibt einen leeren HTML-Container, der nur einige Scripte einbindet. Diese laden dann mittels XMLHttpRequest das bzw. die XSLT-Stylesheets und das XML-Dokument mit der Threadliste. Die Stylesheets werden dann mittels JavaScript auf das XML-Dokument im Speicher angewendet, um das XHTML-Dokument und eventuell den JSON-Code zu erzeugen. Das XHTML-Dokument bzw. -Dokumentfragment wird dann ins DOM des leeren Containerdokuments einmontiert, der JSON-Code ausgeführt. Das war allerdings nur ein Gedankenspiel.  ;) Jedenfalls hat man auf diese Weise Zugriff auf Ausgangs- und Ziel-DOM.

      Mathias

      1. Gruss Mathias,

        Es sind natürlich auch andere Formate denkbar. Etwa die Forumsseite
        direkt im JSON-Format, aus der dann der XHTML-Code erzeugt wird.
        Das war Spaß, oder ?-)

        Nein, wäre das denn Overkill? Google hat sogar eine XSLT-Implementierung
        in JavaScript, dagegen ist eine JSON-zu-XHTML-Konvertierung extrem einfach,
        nahm ich an.... ;)

        Ah, ich glaube zu verstehen ... die aktuelle Forums-Struktur als [[object]]
           permanent im Hauptspeicher des Servers?

        Ich dachte bisher immer, daß bei clientseitiger Transformation nur auf
        das generierte DOM und nicht auch noch auf das Ausgangs-DOM zugegriffen
        werden kann. Lieg ich da falsch?

        Auf das Problem war ich auch gestoßen. Ich weiß nicht, ob es sich lösen
        lässt, jedenfalls dachte ich mir: Es gibt einen leeren HTML-Container,
        der nur einige Scripte einbindet. Diese laden dann mittels XMLHttpRequest
        das bzw. die XSLT-Stylesheets und das XML-Dokument mit der Threadliste.
        Die Stylesheets werden dann mittels JavaScript auf das XML-Dokument im
        Speicher angewendet, um das XHTML-Dokument und eventuell den JSON-Code
        zu erzeugen. Das XHTML-Dokument bzw. -Dokumentfragment wird dann ins DOM
        des leeren Containerdokuments einmontiert, der JSON-Code ausgeführt. Das
        war allerdings nur ein Gedankenspiel.  ;) Jedenfalls hat man auf diese
        Weise Zugriff auf Ausgangs- und Ziel-DOM.

        Um mit geringem technischen Aufwand das Forum allgemein zugänglich zu
           halten, würde ich auf diesen Ansatz verzichten. Im Client sollte am
           Anfang immer ein vollständiges "hartes" (X)HTML-Dokument stehen - so
           schließt man die JavaScript-blinden Browser nicht aus.

        Das einzige, was dagegen spräche, dem Client fertiges (X)HTML zusammen mit
           dem dieser Struktur entsprechenden JSON-Objekt (um auf das clientseitige
           Parsen zu verzichten) auszuliefern, ist doch die etwas größere Datenmenge.

        Da moderne Browser aber XSL-Transformation beherrschen, birgt die
           schon vorgeschlagene Variante: "clientseitige XML-nach-(X)HTML/JSON-
           Transformation" doch eigentlich das meiste Potential:

        - Das Forum ist auch bei deaktiviertem JavaScript nutzbar.
           - Aktiviertes JavaScript katapultiert diese Basis-Version
             dann in eine andere Dimension.
           - Der Start in die andere Welt erfolgt auch recht zügig,
             da auf ein resourcenhungriges Parsen des (X)HTML-Baumes
             verzichtet wird. Die JSON-Struktur als Basis aller
             zusätzlichen Funktionalität steht sofort zur Verfügung.

        so long - peterS. - pseliger@gmx.net

        --
        "Because objects in JavaScript are so flexible, you will want to think differently about class hierarchies.
        Deep hierarchies are inappropriate. Shallow hierarchies are efficient and expressive." - Douglas Crockford
        ie:( fl:) br:> va:( ls:& fo:) rl:| n3;} n4:} ss:} de:µ js:} mo:? zu:]
  2. Hallo molily,

    Ich denke, das ist nur eine Möglichkeit, wie man das Forum mit Javascript nutzbarer gestalten könnte. Vor einigen Jahren hatte Zapp viele weitere Möglichkeiten aufgezeigt.

    Nur zur Info: Das Script funktioniert auch heute noch. Meine Seite habe ich nur lange nicht aktualisiert, aus mehreren Gründen. Erstmal wußte ich nicht, wie oft die Forums-Templates noch umgestellt werden, da gab es ja immer wieder Überraschungen. Dann hatte sich aber auch kaum jemand für das Script interessiert, und ich hatte den Eindruck, dass es von einigen Devs vorsichtig ausgedrückt nicht als Bereicherung empfunden wurde.

    Zum derzeitigen Stand: Es gibt jetzt nur noch eine statt drei Versionen, viele verbesserte und ein paar kleinere neue Funktionen (chronologische Liste der Postings eines Threads, beliebig viele verschiedenfarbige Whitelists usw.).

    Nachteil: Das Aufbauen der riesigen tausendfach verwobenen Objekt- und Arraystruktur beim onload ist elend lahm und verbraucht einigen Speicher.

    Mit halbwegs aktueller Hardware ist das doch eigentlich kein Thema. Auf meinem vier Jahre alten Notebook mit 1,2 GHz braucht Opera 3-4 sec, IE und Moz etwa 5 sec reine Scriptzeit beim Reload, allerdings bei der schlankeren, unregistrierten Version, die sperrige XHTML-Version braucht etwas länger. Mit abgespeckten Templates ließe sich das sicher noch deutlich beschleunigen. Im alten Forum früher lief das Script auch auf einem 350er noch gerade so akzeptabel.

    Ich könnte mir etwa vorstellen, dass sich die Hautpseite und die Postingansicht automatisch aktualisieren, indem sie regelmäßig pollen und so neue Postings abrufen und in den DOM-Baum einmontieren.

    Das wäre natürlich sehr komfortabel und würde Traffic sparen. Ebenfalls sinnvoll fände ich, wenn das Forum auch einzelne Threadzweige in der Nested- und Listenansicht ausliefern könnte. Und natürlich wäre es gut, wenn sich neue Abfrage-Möglichkeiten nicht auf registrierte User beschränken würden.

    Grüße,
    Stefan

    1. Hallo,

      schön, dass du hier mitdiskutierst.

      Ich denke, das ist nur eine Möglichkeit, wie man das Forum mit Javascript nutzbarer gestalten könnte. Vor einigen Jahren hatte Zapp viele weitere Möglichkeiten aufgezeigt.

      Nur zur Info: Das Script funktioniert auch heute noch. Meine Seite habe ich nur lange nicht aktualisiert, aus mehreren Gründen. Erstmal wußte ich nicht, wie oft die Forums-Templates noch umgestellt werden, da gab es ja immer wieder Überraschungen. Dann hatte sich aber auch kaum jemand für das Script interessiert, und ich hatte den Eindruck, dass es von einigen Devs vorsichtig ausgedrückt nicht als Bereicherung empfunden wurde.

      Ich persönlich benutzte damals einen lahmen Rechner, deshalb war das Script für mich nicht sehr interessant. Die Benutzung war mir auch aufwändig.
      Viele Funktionen deines Scripts wurden seitdem auf andere Weise in die Forumssoftware integriert, was ich auch größtenteils für die sinnvollere Lösung halte. Jede clientseitige Lösung, die Operationen an dem äußerst schlecht verarbeitbaren DOM-Baum vornimmt, halte ich daher für eine Übergangslösung. Deshalb sollte nun vor allem über Funktionen auf der Serverseite nachgedacht werden, die man problemlos mit Scripten ansprechen kann. Ich jedenfalls halte es für Zeitverschwendung, sich den Kopf zu zerbrechen über eine JavaScript-Logik, die das Unmögliche möglich macht.

      Zum derzeitigen Stand: Es gibt jetzt nur noch eine statt drei Versionen, viele verbesserte und ein paar kleinere neue Funktionen (chronologische Liste der Postings eines Threads, beliebig viele verschiedenfarbige Whitelists usw.).

      Das klingt interessant. Davon könnte man sicher auch einiges auf dem Server erledigen lassen, sowohl die chronologische Liste als auch die Whitelists (zumindest so etwas: gebe mir alle Posting-IDs des Autors XY).

      Nachteil: Das Aufbauen der riesigen tausendfach verwobenen Objekt- und Arraystruktur beim onload ist elend lahm und verbraucht einigen Speicher.

      Mit halbwegs aktueller Hardware ist das doch eigentlich kein Thema. Auf meinem vier Jahre alten Notebook mit 1,2 GHz braucht Opera 3-4 sec, IE und Moz etwa 5 sec reine Scriptzeit beim Reload, allerdings bei der schlankeren, unregistrierten Version, die sperrige XHTML-Version braucht etwas länger.

      Ich teste momentan mit einem Script (und Variationen) auf Basis der XHTML-Templates, dessen Performance zu wünschen übrig lässt. Was ich auch mache, es läuft auf meinem AMD Athlon XP 2400+ mit Linux 2.6 im Opera manchmal 6, manchmal 40 Sekunden. Im Firefox kommt immer das Warnfenster, mit dem man das Script abbrechen kann. Das Script läuft mindestens 8-10 Sekunden.

      Mit abgespeckten Templates ließe sich das sicher noch deutlich beschleunigen.

      Die Templates, insbesondere die XHTML-Templates, sind für eine maximale Adressierbarkeit in Benutzerstylesheets ausgelegt, nicht für JavaScript-Parsen. Das ist schon Absicht und eine Abspeckung ist schwer möglich, ohne dieses Ziel aufzugeben. Deshalb dachte ich eben darüber nach, es erst gar nicht darauf anzulegen, mit JavaScript nachträglich HTML zu parsen.

      Ebenfalls sinnvoll fände ich, wenn das Forum auch einzelne Threadzweige in der Nested- und Listenansicht ausliefern könnte.

      Hmja, momentan ist glaube ich nur die Threaddarstellung möglich.
      http://forum.de.selfhtml.org/?t=125547&mode=xmlhttp usw.
      Der readmode-Parameter wirkt da nicht.

      Mathias

      1. Hallo molily,

        Viele Funktionen deines Scripts wurden seitdem auf andere Weise in die Forumssoftware integriert, was ich auch größtenteils für die sinnvollere Lösung halte. Jede clientseitige Lösung, die Operationen an dem äußerst schlecht verarbeitbaren DOM-Baum vornimmt, halte ich daher für eine Übergangslösung. Deshalb sollte nun vor allem über Funktionen auf der Serverseite nachgedacht werden, die man problemlos mit Scripten ansprechen kann. Ich jedenfalls halte es für Zeitverschwendung, sich den Kopf zu zerbrechen über eine JavaScript-Logik, die das Unmögliche möglich macht.

        Ich denke, mit zunehmender Leistungsfähigkeit der Rechner eröffnen sich viele neue Möglichkeiten. Warum eine Javascript-Lösung hier unmöglich sein soll, kann ich nicht erkennen. Anderenfalls würde halt bei jeder Kleinigkeit der Server beschäftigt und neuer Traffic erzeugt. Und jede noch so kleine Aktion würde protokolliert, der User wäre vollkommen gläsern.

        Mit halbwegs aktueller Hardware ist das doch eigentlich kein Thema. Auf meinem vier Jahre alten Notebook mit 1,2 GHz braucht Opera 3-4 sec, IE und Moz etwa 5 sec reine Scriptzeit beim Reload, allerdings bei der schlankeren, unregistrierten Version, die sperrige XHTML-Version braucht etwas länger.

        Ich teste momentan mit einem Script (und Variationen) auf Basis der XHTML-Templates, dessen Performance zu wünschen übrig lässt. Was ich auch mache, es läuft auf meinem AMD Athlon XP 2400+ mit Linux 2.6 im Opera manchmal 6, manchmal 40 Sekunden. Im Firefox kommt immer das Warnfenster, mit dem man das Script abbrechen kann. Das Script läuft mindestens 8-10 Sekunden.

        Diese unterschiedlichen Zeiten im Opera habe ich auch. Während im IE, Firefox und Opera 7 die Ladezeiten auch nach vielen Reloads ziemlich konstant bleiben, ist Opera 8/9 zunächst sehr schnell, meist auch noch bei den ersten Reloads, wird dann aber nicht selten instabil. Beenden und neu starten hilft; manchmal hilft es auch, Opera kurz zu minimieren, obwohl der Effekt dann meist nicht von Dauer ist. Es ist wohl ein Bug, der leider auch noch in Version 9 enthalten ist.

        Ich habe gerade nochmal die XHTML-Version mit Firefox getestet. Die reine Zeit für das Auslesen des Threadbaums (derzeit nur 1700 Postings) liegt bei mir um die 3 sec, allerdings lese ich dabei auch den Zeitstempel gar nicht mehr aus, sondern hole die Information älter/neuer aus der MessageID. Sowas wie bei dir, z.B.: hour = parseInt(this.date_string.substr(12, 2)); und dasselbe auch noch für year, month, day und minutes kostet natürlich viel Zeit.

        Wenn ein Reload gar nicht mehr nötig wäre, weil neue Postings ja dynamisch eingebaut würden, wären ein paar Sekunden am Anfang einer Sitzung aber doch eh nicht so tragisch.

        Grüße,
        Stefan

        1. Hallo,

          Ich denke, mit zunehmender Leistungsfähigkeit der Rechner eröffnen sich viele neue Möglichkeiten. Warum eine Javascript-Lösung hier unmöglich sein soll, kann ich nicht erkennen. Anderenfalls würde halt bei jeder Kleinigkeit der Server beschäftigt und neuer Traffic erzeugt.

          Ich will zumindest einmal untersuchen, welche Performance-Verbesserungen es gibt, wenn ich einige Logik auf den Server auslagere.

          Und jede noch so kleine Aktion würde protokolliert, der User wäre vollkommen gläsern.

          Gut, das fürchte ich am wenigsten. Wir werfen die Logfiles jeden Tag weg und die Statistiken sind anonym bis auf die pseudonyme Benutzer-Statistik.

          Diese unterschiedlichen Zeiten im Opera habe ich auch. (...) Es ist wohl ein Bug, der leider auch noch in Version 9 enthalten ist.

          Ich werde mal sehen, ob ich den isolieren und melden kann, denn im Grunde hat sich die Performance bei Opera 9 extrem verbessert, bis auf dieses Problem.

          Ich habe gerade nochmal die XHTML-Version mit Firefox getestet. Die reine Zeit für das Auslesen des Threadbaums (derzeit nur 1700 Postings) liegt bei mir um die 3 sec

          Hui, dann muss ich mal deinen Code studieren...

          allerdings lese ich dabei auch den Zeitstempel gar nicht mehr aus, sondern hole die Information älter/neuer aus der MessageID. Sowas wie bei dir, z.B.: hour = parseInt(this.date_string.substr(12, 2)); und dasselbe auch noch für year, month, day und minutes kostet natürlich viel Zeit.

          Ja, das ist mir auch schon aufgefallen, diese paar Zeilen sind ein Performancekiller. In der Weiterentwicklung habe ich diese Logik ausgelagert, sodass das Date-Objekt/der Timestamp erst erzeugt wird, wenn man es das erste Mal benötigt.

          Mathias

          1. Hallo molily,

            Diese unterschiedlichen Zeiten im Opera habe ich auch. (...) Es ist wohl ein Bug, der leider auch noch in Version 9 enthalten ist.

            Ich werde mal sehen, ob ich den isolieren und melden kann, denn im Grunde hat sich die Performance bei Opera 9 extrem verbessert, bis auf dieses Problem.

            Na, dann viel Erfolg! Das habe ich auch probiert, bin aber gescheitert. In der Statuszeile habe ich mir den Fortschritt der Auslese-Aktion ausgeben lassen, und dabei eine starke Sprunghaftigkeit festgestellt. Manchmal fing er rasend schnell an, hat dann aber zwischen Link 500 und 800 ellenlange Zeit gebraucht und anschließend wieder Gas gegeben. Oder umgekehrt oder völlig anders, und nach einer Änderung und einem Browser-Neustart musste ich zum Teil recht lange warten, bis der Fehler wieder auftrat.

            Ich habe gerade nochmal die XHTML-Version mit Firefox getestet. Die reine Zeit für das Auslesen des Threadbaums (derzeit nur 1700 Postings) liegt bei mir um die 3 sec

            Hui, dann muss ich mal deinen Code studieren...

            Da müßte ich aber vorher nochmal aufräumen, ich melde mich dann wieder.

            Grüße,
            Stefan

            1. Ich habe gerade nochmal die XHTML-Version mit Firefox getestet. Die reine Zeit für das Auslesen des Threadbaums (derzeit nur 1700 Postings) liegt bei mir um die 3 sec

              Hui, dann muss ich mal deinen Code studieren...

              Da müßte ich aber vorher nochmal aufräumen, ich melde mich dann wieder.

              Ich habe jetzt mal das Auslesen des Threadbaums in eine Datei gepackt und den Ballast rausgeworfen: scanforum.js. Das Script läuft bei mir im frisch gebooteten Opera unter einer Sekunde. Gut vergleichen kann man es aber ja nicht, weil dein Script einiges mehr zur Verfügung stellt und auch noch nach neuen Antworten sucht.

              Grüße,
              Stefan