Async und Dokument bereit

30

Ich versuche, meine Seiten zu optimieren, indem ich einige async -Attribute in meine Skripte einfüge. Es scheint, mein Javascript zu brechen, da $(document).ready ausgeführt wird, bevor alle Skripte geladen werden!

Ich habe gesehen, dass ich mein Problem lösen kann, indem ich $(window).load anstelle von $(document).ready stelle, aber ich habe mich gefragt, ob es eine bessere Lösung gibt. Diese Lösung löst in meinem Fall 2 Probleme aus:

  1. Ich muss alle $(document).ready ändern und allen Entwicklern sagen, sie nicht mehr zu benutzen
  2. Die Skripte werden ausgeführt, nachdem alle Bilder geladen wurden. Meine Website hat viele schwere Bilder und ich brauche wirklich einige Skripte, die so schnell wie möglich ausgeführt werden, nachdem dom bereit ist.

Hast du Zaubertricks? Vielleicht alle Skripte am Ende? Verwenden Sie defer anstelle von async ?

    
tibo 15.06.2012, 01:46
quelle

1 Antwort

26

Nach einigen umfangreichen Recherchen kann ich definitiv sagen, dass es am besten ist, Skripte am Ende der Seite zu platzieren.

Yahoo stimmt mir zu: Ссылка

Google spricht nicht über diese Vorgehensweise und scheint asynchrone Skripts zu bevorzugen: Ссылка

IMHO, das Skript am Ende der Seite hat mehrere Vorteile gegenüber async / defer:

  • Es funktioniert für alle Browser (ja, sogar IE;))
  • Sie garantieren die Ausführungsreihenfolge
  • Sie müssen nicht $(document).ready oder $(window).load verwenden
  • Ihre Skripte können ausgeführt werden, bevor Ihre Bilder geladen werden
  • Als async / defer wird Ihre Seite schneller angezeigt
  • Wenn das DOM das Ereignis ready auslöst, werden alle Skripte geladen
  • Kann optimiert werden, indem alle js in einer Datei ohne Probleme zusammengeführt werden (durch ein Tool wie mod_pagespeed)

Der einzige Nachteil, den ich sehen kann, ist, dass der Browser die Downloads nicht parallelisieren kann. Ein guter Grund, async / defer stattdessen zu verwenden, ist, wenn Sie ein Skript haben, das vollständig unabhängig ist (Sie müssen sich nicht auf die Ausführungsreihenfolge verlassen) und das nicht zu einem bestimmten Zeitpunkt ausgeführt werden muss. Beispiel: Google Analytics.

    
tibo 15.06.2012, 11:20
quelle

Tags und Links