O CloudFlare possui uma tecnologia inovadora chamada Rocket Loader (em contas gratuitas e pagas). Mas como isso realmente funciona?
Eles têm um par de páginas que descrevem a tecnologia , mas não um monte de detalhes técnicos. Uma característica importante é que ele carrega todo o Javascript de maneira não-bloqueante (assincronamente) , o que é uma façanha incrível! Isso significa que o HTML / CSS pode ser renderizado sem aguardar o carregamento e a execução de scripts.
Como isso é possível?
Certamente, ele não pode simplesmente mudar todas as <script>
tags para usar, async="true"
ou defer="true"
isso quebraria várias coisas ...
- Os scripts ainda precisam ser carregados na ordem correta (por exemplo, você não pode carregar os plug-ins do jQuery até que a biblioteca do jQuery seja carregada.)
document.write()
as chamadas nesses scripts precisam funcionar ( aparentemente elas não fazem nada nos scripts assíncronos típicos ).- E o evento DOMContentLoaded? Se alguns scripts forem carregados após o acionamento, os manipuladores de eventos não dispararão?
E, como desenvolvedor, há mais alguma coisa que eu preciso estar ciente para garantir que meus sites / scripts / plugins permaneçam compatíveis com o Rocket Loader?
fonte
document.write
foi realmente modificado. Eu recebofunction (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)}}
como o valor da string. Portanto, a hipótese quedocument.write
foi substituída está realmente correta.