Estoy evaluando los recursos existentes para la optimización de carga de scripts, pero lo he leído en algunos artículos como this, hace referencia a que los navegadores anteriores bloquean otras descargas hasta que se complete esta fase de carga de scripts secuenciales. Compruebo Modernizr (yepnope.js), headjs y ControlJs como candidatos. Pero, ¿es necesario utilizar estas herramientas para la carga de scripts paralelos en los navegadores modernos?¿Los navegadores modernos están cargando scripts en paralelo o secuencialmente?
Respuesta
creo que por defecto la mayoría de los navegadores de hoy en realidad cargar los scripts en paralelo; pero el navegador no ejecutará los scripts por defecto en paralelo. Por ejemplo, en el siguiente código, los scripts se cargarán en paralelo. En la imagen, podemos ver que Fast1.js y Fast2.js cargan extremadamente rápido, pero según el tiempo en la consola del navegador, Fast2.js ejecuta 3 segundos después de que Fast1.js se ejecuta.
Además, algo más a tener en cuenta es que el orden de los archivos puede hacer la diferencia. El archivo Backbone.js depende del archivo underscore.js. Si cambiamos el orden de estos archivos, donde bacbone.js está antes de underscore.js, se generará un error.
<html >
<head>
<title></title>
<script src="scripts/fast1.js" type="text/javascript"></script>
<script src="scripts/libs/jquery-1.8.3.js" type="text/javascript"></script>
<script src="scripts/libs/underscore.js" type="text/javascript"></script>
<script src="scripts/libs/backbone.js" type="text/javascript"></script>
<script src="scripts/fast2.js" type="text/javascript"></script>
</head>
<body>
Hello
<script type="text/javascript">
console.log("html: " + Date());
</script>
<img src="imgs/bImg.png" />
</body>
</html>
Aquí está el código para el archivo JavaScript Fast1.js y Fast2.js
console.log("Fast 1: " + Date())
para el script de carga utilizo Require.js. También proporciona la ventaja de organizar su código en módulos que están en archivos individuales.
Aquí hay un puesto de un blog se crea en Script Browser Carga: Browser Script Loading
Éstos son algunos artículos sobre la escritura de carga:
¿Existe un estándar HTML que prohíbe al navegador ejecutar el código descargado de forma paralela? – Pacerier
La mayoría de los navegadores los cargan secuencialmente. Sin embargo, existe el atributo async
que puede poner en una etiqueta script
para provocar que se cargue de manera diferente.
MDN explica lo que hace una etiqueta script
muy bien.
https://developer.mozilla.org/en-US/docs/HTML/Element/Script
- 1. Iniciar procedimientos almacenados secuencialmente o en paralelo
- 2. Ejecutar bucle foreach en paralelo o secuencialmente dado una condición
- 3. ¿Los navegadores modernos aún limitan las descargas paralelas?
- 4. Cargando scripts dinámicamente
- 5. ¿Los preprocesadores están obsoletos en los idiomas modernos?
- 6. ¿Cómo implementan los navegadores modernos JS Array, específicamente agregando elementos?
- 7. ¿JQuery AJAX funciona en navegadores modernos con PUT y DELETE?
- 8. ¿Tamaño/longitud máxima de expresión regular en navegadores web "modernos"?
- 9. ¿Por qué los navegadores modernos no son compatibles con los métodos de forma PUT y DELETE?
- 10. ¿Están todos los scripts escritos en lenguajes de script?
- 11. Pausas gif animadas cuando los objetos ember.js se están cargando
- 12. anchura() y la altura() para navegadores modernos sin jQuery
- 13. ¿El manejo de llaves en javascript regex es el mismo en todos los navegadores modernos?
- 14. ¿Cuál es la situación con XSLT y XPATH en los navegadores modernos?
- 15. ¿Las contraseñas en los sistemas modernos de Unix/Linux aún están limitadas a 8 caracteres?
- 16. Paralelo Para bucles. ¿Están esperando el final?
- 17. enviando control de caché/expira/pragma con respuesta 404 - ¿válido/entendido por los navegadores modernos?
- 18. Detectar con php si se están cargando archivos, o está abierto
- 19. Cuando publico una página ASP.NET, ¿puedo representar los diversos controles en la página en paralelo?
- 20. ¿Los métodos PUT, DELETE, HEAD, etc. están disponibles en la mayoría de los navegadores web?
- 21. Bash o Bourne Scripts?
- 22. ¿Por qué mis animaciones de jQuery están picado en los navegadores basados en webkit?
- 23. TLS/SRP en los navegadores?
- 24. ¿Los scripts de "cromo" de la extensión Google Chrome están en la zona de pruebas?
- 25. ¿Por qué los navegadores permiten desactivar Javascript?
- 26. Cargando complementos de jQuery y mejores prácticas de scripts múltiples
- 27. Ejecutar comandos secuencialmente en Python
- 28. ¿Ha cambiado el comportamiento de publicación de formulario en los navegadores modernos? (o ¿Cómo se manejan dos clics en el navegador)
- 29. Significado de $? en los scripts
- 30. ¿La mejor manera de incrustar Flash para navegadores modernos usando HTML5?
secuencialmente, si no haciendo algo extra para cargar archivos JavaScript ... –
Enlazando https://stackoverflow.com/q/1795438/6 32951 – Pacerier