CloudFlare tiene una tecnología innovadora llamada Rocket Loader (tanto en cuentas gratuitas como de pago). Pero, ¿cómo funciona realmente?
Tienen un par de páginas que describen la tecnología , pero no muchos detalles técnicos. Una característica clave es que hace que todo Javascript se cargue de manera no bloqueante (asincrónicamente) , ¡lo cual es una hazaña increíble! Esto significa que el HTML / CSS se puede representar sin esperar a que se carguen y ejecuten los scripts.
¿Cómo es eso posible?
Seguramente no puede simplemente cambiar todas las <script>
etiquetas para usar async="true"
o defer="true"
como esto rompería varias cosas ...
- Las secuencias de comandos aún deben cargarse en el orden correcto (por ejemplo, no puede cargar complementos jQuery hasta que se haya cargado la biblioteca jQuery).
document.write()
las llamadas en estos scripts deben funcionar ( aparentemente no hacen nada en los scripts asíncronos típicos ).- ¿Qué pasa con el evento DOMContentLoaded? Si algunos scripts se cargan después de que esto se haya activado, ¿sus controladores de eventos no se activan?
Y como desarrollador, ¿hay algo más que deba tener en cuenta para garantizar que mis sitios / scripts / complementos sigan siendo compatibles con Rocket Loader?
fuente
document.write
hecho ha sido mutada. Me salefunction (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 el valor de la cadena. Entonces, la hipótesis que sedocument.write
ha sobrescrito es realmente correcta.