CloudFlare hat eine bahnbrechende Technologie namens Rocket Loader (sowohl für kostenlose als auch für kostenpflichtige Konten). Aber wie geht das eigentlich?
Sie haben ein paar von Seiten , die die Technologie beschreiben , aber nicht viele technische Details. Eine wichtige Eigenschaft ist, dass das gesamte Javascript nicht blockierend (asynchron) geladen wird , was eine unglaubliche Leistung ist! Dies bedeutet, dass HTML / CSS gerendert werden kann, ohne auf das Laden und Ausführen von Skripten zu warten.
Wie ist das möglich?
Es kann doch nicht einfach alle ändern <script>
Tags zu verwenden async="true"
oder defer="true"
als würde dies mehrere Dinge brechen ...
- Skripte müssen weiterhin in der richtigen Reihenfolge geladen werden (zum Beispiel können Sie jQuery-Plugins erst laden, wenn die jQuery-Bibliothek geladen wurde.)
document.write()
Aufrufe in diesen Skripten müssen funktionieren ( anscheinend tun diese in typischen asynchronen Skripten nichts ).- Was ist mit dem Ereignis DOMContentLoaded? Wenn einige Skripte geladen werden, nachdem dies ausgelöst wurde, werden ihre Event-Handler nicht ausgelöst?
Und gibt es als Entwickler noch etwas, das ich beachten muss, um sicherzustellen, dass meine Websites / Skripte / Plugins mit Rocket Loader kompatibel bleiben?
quelle
document.write
es tatsächlich mutiert ist. Ich bekommefunction (b,d,e,g,h){if(u.getActivated())return c.apply(f,arguments);try{return j[a].apply(f,arguments)}catch(i){return j[a](b,d,e,g,h)}}
als String den Wert. Diedocument.write
überschriebene Hypothese ist also in der Tat richtig.