CloudFlare ma przełomową technologię o nazwie Rocket Loader (zarówno na kontach darmowych, jak i płatnych). Ale jak to właściwie działa?
Mają kilka z stron , które opisują technologię , ale nie wiele szczegółów technicznych. Jedną z kluczowych cech jest to, że sprawia, że wszystkie JavaScript ładowane są w sposób nieblokujący (asynchronicznie) , co jest niesamowitym wyczynem! Oznacza to, że HTML / CSS można renderować bez czekania na załadowanie i uruchomienie skryptów.
Jak to możliwe?
Z pewnością nie można po prostu zmienić wszystkie <script>
znaczniki do użycia async="true"
lub defer="true"
jak to złamie kilka rzeczy ...
- Skrypty nadal muszą ładować się w odpowiedniej kolejności (na przykład nie można załadować wtyczek jQuery, dopóki biblioteka jQuery nie zostanie załadowana).
document.write()
Wywołania w tych skryptach muszą działać ( najwyraźniej nie robią nic w typowych skryptach asynchronicznych ).- Co ze zdarzeniem DOMContentLoaded? Jeśli niektóre skrypty zostaną załadowane po uruchomieniu, czy ich procedury obsługi zdarzeń nie zostaną uruchomione?
A jako programista, czy jest coś jeszcze, o czym muszę wiedzieć, aby zapewnić zgodność moich stron / skryptów / wtyczek z programem Rocket Loader?