Prototypejs PeriodicalUpdater memory leak

Back2toxic

Erfahrenes Mitglied
Hallo in die Runde,

wir verwenden bei uns den PeriodicalUpdater von Prototypejs in der Version 1.7.3.

Upgedated wird ein Container mit einer normalen Tabelle mit validem HTML, die Updategröße liegt bei ca. 27kB pro Intervall.
Der Updater läuft ohne Decay alle 2 Sekunden.

Nun tritt im IE (alle Versionen) das Problem auf, dass der Speicherverbrauch nach und nach zunimmt.
Im Profiler wird sichtbar, dass die Anzahl der Nodes stetig zunimmt.

Ich bin nun seit einigen Tagen an der Lösungsfindung, doch auch Google weiß hier keinen Rat.
Habt ihr vielleicht noch Tipps für mich?

Auch den Container vorher selbst zu leeren (Observer + Nodes) bringt nicht das gewünschte Ergebnis.

Code:
new Ajax.PeriodicalUpdater(divid, url, {
    method: 'GET',
    frequency: ReloadValue, // 2*1000
    decay: 0,
    parameters: JSON.parse(parameters),
    onSuccess: function (t) {
        $(t.request.container.success).clear();
    }
})

// wobei .clear -->
Element.addMethods({
    clear: function(element) {
        element = $(element);

        element.descendants().each(function(elem) {
            Element.purge(elem);
            Event.stopObserving(elem);
        });

        return element.update();
    }
});
 
Falls mal jemand durch Zufall hierauf stößt:
Ich habe zwischenzeitlich eine akzeptable Lösung gefunden die auch nach längerer Laufzeit noch sauber läuft.

Unsere AJAX-Requests laufen nun nicht mehr über Prototype sondern über eine selbst erstellte XmlHttpRequest-Wrapper-Klasse, angelehnt an Funktionsweise und Parameter der Ajax.Request(-Updater, -PeriodicalUpdater)-Klasse von PT - lediglich ohne Decay da dieser in unserem Fall nicht benötigt wird.
--> Speicherverbrauch hat sich dadurch von >1GB auf <100MB nach einer Laufzeit von 2 Tagen reduziert.
 

Neue Beiträge

Zurück