Hi,
Ich suche nach der performantesten Methode einen Ticker in eine Seite einzubauen.
Hast Du ein Glück, das Du mir bekannt bist und ich annehmen kann, das Du weißt was Du tust ;-)
Den Anfang habe ich mir schon denke ich ganz gut überlegt. Die Tickerdaten liegen als Textdatei (oder XML Datei) auf dem Server. JavaScript fragt sie mittels XMLHttpRequest ab, dabei wird IfModifiedSince verwendet und wenn sich die daten seit der letzten Abfrage nicht verändert haben, dann wird einfach das gleiche noch einmal über den Bildschirm geschickt. Falls sich die Daten geändert haben werden die neuen Daten über den Bildschirm geschickt.
Ohgottohgottohgottohgott ...
So weit so gut.
Auslegungssache ;-)
Aber prinzipiell völlig in Ordnung, klar.
Wie bewege ich aber jetzt den Text von links nach rechts, so dass sie sich sosmoth wie möglich bewegen aber dennoch so wenig Resourcen wie möglich fressen?
Was bedeutet "smooth": pixelweise (1,5,10... Pixel/Hub) oder buchstabenweise? Je "weicher" die Bewegung sein soll, desto kleiner müssen natürlich die Sprünge sein, am besten 1 Pixel/Hub. Je höher die Geschwindigkeit des Bandes sein soll, desto öfter muß das Band versetzt werden. Geschwindigkeit ist Länge/Zeit und die Länge mißt Du in oben beschriebenem Pixel/Hub bzw Buchstaben/Hub. Auf- bzw Abrunden. Minimum suchen (Na, wie ging das noch? ;-). Implementation wie gewohnt.
Als einzige Optimierung wäre es zu empfehlen die Hübe zu desynchronisieren, d.h. wenn Du an mehreren Stellen Text verholen willst, dann ändere nicht nur die Länge sondern auch den Zeitpunkt. Damit ist die Last etwas verteilt. Ich glaube aber nicht, das es viel bringen wird.
Achso: nicht vergessen den XMLHttpRequest() asynchron und nichtblockierend auszuführen.
Und da ich es mir eh nicht verkneifen kann: der schnellste Prozeß ist stets der, der gar nicht erst ausgeführt wird ;-)
Ah, gut, wenn man vor dem Abschicken nochmal schaut:
- Ein <input> Element in dem das ganze wie in diesem Beispiel bewegt wird: http://www.wendenburg.de/test/ticker_sub.html. Das läuft allerdings sehr langsam vor sich hin und läuft auch nicht flüssig.
Das ist ein typisches buchstabenweises Verschieben. Das kann rein optisch etwas hakeln wenn man keine Schrift mit konstanter Breite verwendet. Ansonsten ist der Ansatz gar nicht schlecht, da läßt sich nicht mehr viel in der Zeit optimieren, wahrscheinlich sogar gar nichts mehr: es ist die schnellste Methode.
so short
Christoph Zurnieden