2009-05-14 6 views
1

Die dillema ist wie folgt:Wo einfügen Skriptblöcke

Wenn ich versuche, alle Skripte Blöcke auf der Masterpage (enthalten Seite in einigen Frameworks) zu passen, bekommt jeder Seite eine Kopie von jedem Skript (einschließlich derjenigen, sie brauchen nicht) und diese summiert sich schnell und bläht die Seitengröße auf.

Wenn ich Skriptblöcke bei Bedarf einfüge/einfüge, wird Javascript über das ganze Projekt verteilt.

Ich habe Probleme damit, das richtige Gleichgewicht zu halten. Jemand?

Antwort

0

Wir minimieren, zusammenführen und gzip unsere Site Wide JS (das ist eigentlich etwa 17 Dateien in zwei Dateien zusammen, eine für alle unsere Code und eine für Bibliothekscode wie mootools und clientcide). Dies reduziert die Zeit, die zum Herunterladen der Skripts benötigt wird, erheblich. Komprimierung und Zusammenführung sind erfolgt und die Fly und Cache auf dem Server, so dass die Entwicklung überhaupt nicht verlangsamt wird. Unser gesamtes JS für die Sitewide Goodies ist ungefähr 50K, wenn alle oben wie oben komprimiert sind.

Wir haben auch eine lange Ablaufzeit für die Dateien festgelegt, die alle eine Versionsnummer haben. Wenn wir eine Änderung vornehmen, werden wir die Versionsnummer hochsetzen (wir haben eine Sitewide, um es einfach zu machen) und Benutzer werden gezwungen, eine neue Version und einmal heruntergeladen werden sie vom Browser zwischengespeichert.

Zusätzlich haben wir den Schritt gemacht, unsere JS in den Fuß der Seite zu stellen, dies ermöglicht alles viel schneller zu rendern und gibt dem Benutzer etwas zu sehen, während wir das JS herunterladen.

Einige einzelne Seiten haben ein Skript, das sie brauchen (Suchformulare, etc.). Diese erhalten die gleiche Behandlung wie oben (dh alle benötigten Dateien werden zusammengeführt, minimiert, gezippt), aber der seitenweite Code bleibt unverändert damit wir das Caching nutzen können. In diesem Fall konnten wir 3 JS-Dateien, Sitewide, Bibliothek und benutzerdefinierten Code für diese Seite (n) herunterladen.

1

Das Einbinden aller JS-Dateien ist kein großes Problem (es sei denn, sie haben langsamen Code beim Laden) und wird die Seite nicht so sehr aufblähen: Sobald sie geladen sind, speichert der Browser sie trotzdem, also wird es auch Ergebnis auf den nächsten Seiten 0 Ladezeit.

Solange Sie nicht den Inhalt der JS-Dateien auf der Seite selbst, natürlich! :-)

1

Wenn das Aufblähen Ihrer Seitengröße ein Problem ist, sollten Sie Ihr Javascript möglicherweise in eine separate js-Datei (oder sogar mehrere) verschieben, auf die von den Seiten verwiesen wird, die es benötigen. Dies bedeutet, dass Sie mehr HTTP-Anfragen für Erstbesucher haben, aber es ermöglicht dem Browser, das Javascript zwischenzuspeichern, damit es nicht für jede Seite Ihrer Website erneut abgerufen werden muss.

0

es ist nicht so ein großes Problem, wenn Sie Ihre Skripte minimieren, etwas so groß wie Jquery ist etwa 50k nach der Verkleinerung.

1

Ich würde so viel JavaScript wie möglich zu externen .js Dateien extrahieren. Fügen Sie die am häufigsten verwendeten Bibliotheken in die Masterseite ein, aber wenn eine einzelne Seite JavaScript für diese Seite benötigt, würde ich vorschlagen, sie nur auf dieser Seite zu laden. Behalten Sie einen Querverweis, welche .js Dateien von welchen Seiten geladen werden. Wenn Sie sehen, dass eine Bibliothek von vielen Seiten referenziert wird, verschieben Sie sie auf die Masterseite.

Stellen Sie sicher, dass Sie alle externen JavaScript-Bibliotheken komprimieren/minimieren, indem Sie etwas wie das YUI Compressor oder ein anderes in What do you use to minimize and compress JavaScript libraries? genanntes Tool verwenden.