5

Ich habe eine JS-schwere App und es läuft langsam im IE. Ich werde ungefähr eine Woche damit verbringen, für IE zu optimieren, und ich hätte gerne eine Richtung, um Dinge zu versuchen.Wie kann ich für IE optimieren?

fand ich diesen Thread Drip Referenzierung, was nützlich scheint:

IE and Memory accumulation in Javascript

Ich bin auf der Suche nach Tipps, wie „Einsatz für Schleifen statt $ .each“ sowie architektonische Best Practices, die ich darf nicht verwendet werden.

Bibliotheken Ich verwende:

Dinge, die ich schon so mache:

  • mit for-Schleifen statt $ .each
  • Caching jQuery Kontexte für häufig zitierten DOM-Elemente
  • Gebäude mit Hilfe von HTML Array.join() vs. String-Verkettung

Irgendwelche Vorschläge?

Danke!

+1

* "Erstellen von HTML mit Array.join() vs. String-Verkettung" * Eine gute Idee in fast jeder JavaScript-Implementierung, die ich je gesehen habe. –

+1

Welche Version von IE ist es langsam? Die Ausführung von Javascript in v8 ist wesentlich schneller als v7. Version 8 ist immer noch langsamer als FFox. Haben Sie ein klares Ziel dessen, was Sie erreichen wollen, weil es wahrscheinlich nur so viel gibt, was Sie tun können, bevor Sie mit dem IE an die Wand gehen, wenn es immer noch zu langsam ist, dann müssen Sie nach einer anderen Möglichkeit suchen. – slugster

+0

Langsam in beiden IE7 und IE8 (Ich ignoriere IE6). Offensichtlich ist IE8 besser. Auf welche andere Weise würde ich optimieren? Ich nehme an, dass es das JavaScript ist, das die Dinge langsam macht, und unglücklicherweise benötigt die App viel JS. Ich bin gespannt, wie Google seine JS-Apps so gut laufen lässt, wie sie es im IE tun. – marclar

Antwort

5

nicht blind durch den Code Gehst machen triviale Verbesserungen wie das Ändern $.each() Schleifen for Schleifen; Das ist wirklich sinnlos und eines Tages wirst du es bereuen. Verwenden Sie einen Profiler, weil es eine sehr gute Wette ist, dass die meisten Ihrer Probleme von einer sehr kleinen Anzahl von unerwartet schlechten Code stammen.

Etwas wie dynaTrace ajax edition sind in Situationen wie diesem von unschätzbarem Wert.

+0

Mmmm. . . Ich bezweifle, dass ich solche "trivialen" Änderungen bereuen würde, obwohl Ihr größerer Punkt genommen wird. Ich bin jedoch neugierig auf IE-spezifische Engpässe, falls Sie welche kennen. Und das heißt, ich werde auf der Suche nach * von Entwicklern verursachten * Engpässen sein. – marclar

+0

Gut tun, zumindest einige dieser Dinge können einige wertvolle "guten Code" loswerden. Eine mit '$ .each()' geschriebene Schleife, die einmal beim Laden der Seite ausgeführt wird und durch 5 Dinge iteriert, verlangsamt nichts. Suchen Sie nach Code, der unnötigerweise wirklich teure jQuery-Lookups durchführt, möglicherweise immer wieder. – Pointy

2

Wenn es IE6/7 und "eine Seite" App ist, minimieren Sie dann die Dom-Manipulation dh. Stattdessen ersetzen Sie Hunderte kleiner Änderungen in einer Schleife.

+0

Ja - das tun; Danke, Heikki. – marclar