La ubicación de las etiquetas <script src="">
en un documento HTML puede afectar el rendimiento y la velocidad de carga de la página. Existen dos lugares principales donde se pueden colocar: en la <head>
y antes del cierre de </body>
.
<head>
(NO recomendado para scripts bloqueantes)
Si colocas los scripts en el <head>
, el navegador los descargará y ejecutará antes de renderizar el contenido de la página. Esto puede retrasar la carga de la página, ya que los scripts bloquean el renderizado hasta que se ejecutan.
Ejemplo:
<head>
<script src="script.js"></script>
</head>
Cuándo usarlo:
✅ Para scripts críticos, como Google Analytics o configuraciones iniciales.
❌ No es recomendable para scripts grandes que afecten la carga de la página.
</body>
(RECOMENDADO)
La mejor práctica es colocar los scripts justo antes de </body>
. Esto permite que el HTML y CSS se carguen primero, mejorando el tiempo de renderizado y la experiencia del usuario.
Ejemplo:
<body>
<h1>Hola, mundo</h1>
<script src="script.js"></script>
</body>
✅ Mejora la velocidad de carga y el rendimiento.
✅ Evita que los scripts bloqueen el renderizado.
async
y defer
para optimización
Si necesitas cargar scripts en el <head>
sin afectar la velocidad, puedes usar los atributos async
y defer
.
async
: Descarga y ejecuta el script en paralelo sin esperar a que se cargue el HTML (ideal para scripts independientes).
defer
: Descarga el script en paralelo pero lo ejecuta solo cuando el HTML ha sido completamente cargado (ideal para scripts que dependen del DOM).
Ejemplo:
<head>
<script src="script.js" async></script> <!-- Se ejecuta tan pronto como se descarga -->
<script src="otro-script.js" defer></script> <!-- Se ejecuta después de cargar el DOM -->
</head>
Ubicación | Pros | Contras |
---|---|---|
<head>
|
Carga scripts críticos antes del renderizado | Bloquea la carga de la página |
</body> (recomendado)
|
Mejora la velocidad de carga y el renderizado | Puede retrasar scripts críticos |
<head> con async o defer
|
Permite optimización sin bloquear | No siempre compatible con todos los scripts |
Coloca los scripts antes del </body>
o usa defer
en el <head>
para optimizar la carga.
Jorge García
Fullstack developer