CloudFlare обладает довольно революционной технологией под названием Rocket Loader (как для бесплатных, так и для платных аккаунтов). Но как это на самом деле работает?
У них есть несколько из страниц , которые описывают технологию , но не много технических деталей. Одной из ключевых особенностей является то, что он загружает весь Javascript неблокирующим образом (асинхронно) , что является невероятным подвигом! Это означает, что HTML / CSS можно рендерить, не дожидаясь загрузки и запуска скриптов.
Как это возможно?
Конечно, он не может просто изменить все <script>
теги, чтобы использовать, async="true"
или defer="true"
как это может сломать несколько вещей ...
- Скрипты по-прежнему нужно загружать в правильном порядке (например, вы не можете загружать плагины jQuery, пока не загрузится библиотека jQuery).
document.write()
вызовы в этих скриптах должны функционировать ( очевидно, они ничего не делают в типичных асинхронных скриптах ).- Как насчет события DOMContentLoaded? Если некоторые сценарии загружаются после того, как это сработало, их обработчики событий остаются без запуска?
И как разработчику, есть ли что-то еще, что мне нужно знать, чтобы мои сайты / скрипты / плагины оставались совместимыми с Rocket Loader?