¿Cuál es la diferencia entre los guiones diferidos y los guiones colocados al final del cuerpo de la página?

2 minutos de lectura

HTML5 introdujo el defer atributo para scripts cuya carga se puede diferir en una página HTML. defer puede usarse para cualquier script que no necesite cargarse antes del DOM (también conocido como no meterse con el DOM antes de que esté listo).

Durante mucho tiempo, se ha aconsejado a los desarrolladores web que coloquen todos los scripts que no necesitan cargarse antes de que el DOM no esté en la página. head pero antes del final de la body etiqueta en su lugar.

¿Cuál es la diferencia entre el uso de defer y el consejo practicado durante mucho tiempo? ¿El primero sustituye al segundo?

Agradezco cualquier respuesta. Gracias.

  • Creo que la secuencia de comandos aún se descargará incluso si usa aplazar, y puede ralentizar la carga general de la página

    – Eugenio

    1 de noviembre de 2012 a las 18:08

  • La idea detrás de poner el script en la parte inferior no es solo para retrasar la ejecución, sino también para retrasar la descarga.

    – Eugenio

    1 de noviembre de 2012 a las 18:09

Avatar de usuario de El Yobo
El Yobo

Tanto los scripts asíncronos como los diferidos comienzan a descargarse inmediatamente sin pausar el analizador y ambos admiten un controlador de carga opcional para abordar la necesidad común de realizar la inicialización que depende del script.

Desde el Blog de WebKit, por lo que el comportamiento no es necesariamente el mismo en todos los navegadores. Por lo tanto, el rendimiento sería mejor si los scripts todavía están al final, ya que se descargarán más tarde.

Edición 2017: la compatibilidad con el navegador ahora es mucho mejor, por lo que probablemente pueda salirse con la suya con los scripts asincrónicos/diferidos en la cabeza. Todavía es probablemente una opción más segura ponerlos en la parte inferior; los nuevos navegadores aún los descargarán antes, incluso si no están en la cabeza.

Editar 2020: en estos días, a menos que esté apoyando muy navegadores antiguos, debe seguir adelante y usar async/defer en la cabeza.

  • ¿Por qué sería mejor el rendimiento cuando los scripts se descargan más tarde? ¿No sería mejor el rendimiento si los scripts se descargan lo antes posible?

    – Rudey

    17 de febrero de 2017 a las 9:53

  • @RuudLenders porque en ese momento el soporte era irregular y muchos navegadores descargaban los scripts inmediatamente y esto bloqueaba el procesamiento hasta que el script se descargaba y ejecutaba. El soporte es mucho mejor ahora, cuatro años y medio después, pero la diferencia en el momento en que el navegador comenzará a descargarse es pequeña (si la hay, con la preparación), por lo que aún los pondría al final del cuerpo.

    – El Yobo

    12 de mayo de 2017 a las 2:05


¿Ha sido útil esta solución?