CloudFlare possède une technologie révolutionnaire appelée Rocket Loader (sur les comptes gratuits et payants). Mais comment cela fonctionne-t-il réellement?
Ils ont deux ou trois des pages qui décrivent la technologie , mais pas beaucoup de détails techniques. Une caractéristique clé est qu'il charge tout Javascript de manière non bloquante (de manière asynchrone) , ce qui est un exploit incroyable! Cela signifie que le HTML / CSS peut être rendu sans attendre le chargement et l'exécution des scripts.
Comment est-ce possible?
Certes, il ne peut pas simplement changer toutes les <script>
balises à utiliser async="true"
ou defer="true"
cela casserait plusieurs choses ...
- Les scripts doivent toujours être chargés dans le bon ordre (par exemple, vous ne pouvez pas charger les plug-ins jQuery tant que la bibliothèque jQuery n'est pas chargée.)
document.write()
les appels dans ces scripts doivent fonctionner ( apparemment, ceux-ci ne font rien dans les scripts asynchrones typiques ).- Qu'en est-il de l'événement DOMContentLoaded? Si certains scripts sont chargés après que cela s'est déclenché, leurs gestionnaires d'événements ne sont-ils pas déclenchés?
Et en tant que développeur, y a-t-il autre chose dont je dois être conscient pour que mes sites / scripts / plugins restent compatibles avec Rocket Loader?