📍 Saremo a Digital 1to1 — Roma · 28-29 maggio 2026✨ Nuovi casi studio online: PhysioEnergy, Eco-Papas, A Tutto Yoga🚀 Prenota una call gratuita di 30 minuti con il team📍 Saremo a Digital 1to1 — Roma · 28-29 maggio 2026✨ Nuovi casi studio online: PhysioEnergy, Eco-Papas, A Tutto Yoga🚀 Prenota una call gratuita di 30 minuti con il team
1604lab
← Tutti gli articoli
Español 03 de mayo de 2026 28 min di lettura

Core Web Vitals: la guía completa de LCP, INP, CLS y métricas de soporte

Guía técnica y SEO de los Core Web Vitals: LCP, INP, CLS, métricas de soporte como TTFB y FCP, herramientas, umbrales oficiales de Google y workflow.

Disponibile in:ItalianoEnglish
Core Web Vitals: la guía completa de LCP, INP, CLS y métricas de soporte

Índice de Contenidos

  1. Introducción a los Core Web Vitals
  2. ¿Por Qué Importan los Core Web Vitals? SEO, UX y Tasas de Conversión
  3. Field Data vs. Lab Data: Entendiendo las Diferencias
  4. LCP: Largest Contentful Paint
  5. INP: Interaction to Next Paint
  6. CLS: Cumulative Layout Shift
  7. Métricas Secundarias Clave
  8. Herramientas para Medir y Optimizar Core Web Vitals
  9. Workflow de Optimización de Core Web Vitals
  10. Errores Comunes y Mitos sobre Core Web Vitals
  11. Caso de Estudio 1604lab: Tiendas Hyvä Magento 2 y Core Web Vitals
  12. Preguntas Frecuentes (FAQ)
  13. Fuentes Oficiales

Introducción a los Core Web Vitals

Core Web Vitals: LCP, INP, CLS

La experiencia del usuario en la web ha evolucionado drásticamente en las últimas décadas. Lo que antes era suficiente para una interacción básica, hoy es el mínimo exigible para retener la atención del usuario y fomentar la conversión. En este contexto, Google, como el motor de búsqueda dominante, ha puesto un énfasis creciente en la calidad de la experiencia de página como un factor de clasificación.

¿Qué son los Core Web Vitals?

Los Core Web Vitals (CWV) son un conjunto de métricas específicas y cuantificables que Google ha definido como esenciales para medir la calidad de la experiencia del usuario en la web. No son métricas arbitrarias; están diseñadas para evaluar aspectos críticos de cómo los usuarios perciben el rendimiento de carga, la interactividad y la estabilidad visual de una página web.

Actualmente, los Core Web Vitals se componen de tres métricas principales:

  1. Largest Contentful Paint (LCP): Mide el tiempo que tarda el elemento de contenido más grande y visible en la ventana gráfica en cargarse. Es una métrica de percpeción de la carga.
  2. Interaction to Next Paint (INP): Mide la latencia de todas las interacciones del usuario con la página (clics, toques, pulsaciones de teclas) y reporta el valor más alto o un valor representativo de estas latencias. Evalúa la capacidad de respuesta.
  3. Cumulative Layout Shift (CLS): Mide la cantidad de cambios de layout inesperados de los elementos visuales de la página. Evalúa la estabilidad visual.

Estas métricas evolucionan. Google actualiza y ajusta los CWV para reflejar mejor la experiencia real del usuario y adaptarse a las nuevas tecnologías web. La comprensión y optimización de estas métricas no es solo una tarea técnica, sino una estrategia competitiva y centrada en el usuario.

Google, Page Experience y el Ranking

En mayo de 2021, Google implementó una actualización de algoritmo significativa que introdujo la "Page Experience" como un factor de clasificación. Los Core Web Vitals son el pilar fundamental de esta señal de experiencia de página. Esto significa que el rendimiento de su sitio web en relación con LCP, INP y CLS puede influir directamente en sus clasificaciones en los resultados de búsqueda de Google.

La filosofía detrás de esto es simple: Google busca proporcionar los resultados más relevantes y de mayor calidad a sus usuarios. Y la "calidad" no se limita solo al contenido; se extiende a cómo se accede y se interactúa con ese contenido. Un sitio web que carga rápidamente, responde instantáneamente a las interacciones y no frustra al usuario con cambios de diseño inesperados, ofrece una experiencia superior.

Es importante destacar que, si bien los Core Web Vitals son un factor de clasificación, Google ha reiterado que el contenido de alta calidad y relevante sigue siendo primordial. Sin embargo, en situaciones donde hay múltiples páginas con contenido similarmente relevante, una mejor experiencia de página puede ser el desempate decisivo para obtener una posición más alta.

INP: La Nueva Métrica desde Marzo de 2024

La evolución es inherente a la web. En marzo de 2024, Google completó la transición de First Input Delay (FID) a Interaction to Next Paint (INP) como el nuevo Core Web Vital principal para medir la interactividad. Esta es una actualización crucial que los desarrolladores y SEOs deben comprender y abordar.

¿Por qué el cambio de FID a INP?

  1. Amplitud de la Medición: FID solo medía la latencia de la primera interacción en una página. INP, en cambio, observa todas las interacciones que un usuario tiene con la página a lo largo de su ciclo de vida, desde el clic inicial hasta el desplazamiento, el tecleo o cualquier otro evento de entrada. Luego reporta el valor más alto de estas latencias (o el percentil 98 de un conjunto de interacciones, dependiendo de la instrumentación).
  2. Precisión de la Experiencia: INP ofrece una imagen mucho más completa y precisa de la capacidad de respuesta general de una página. Un usuario podría tener una primera interacción rápida, pero experimentar retrasos significativos en interacciones posteriores, lo cual FID no capturaría. INP aborda esta limitación.
  3. Impacto Real: Una interacción lenta significa que el navegador tarda en pintar el siguiente fotograma visual después de la acción del usuario. Esto crea una sensación de "lag" o falta de respuesta que es profundamente frustrante. INP cuantifica este fenómeno de manera más efectiva.

Este cambio subraya la intención de Google de ir más allá de las métricas superficiales y enfocarse en la experiencia real y sostenida del usuario. La optimización para INP requiere una comprensión profunda de cómo se procesan las interacciones en el navegador y cómo se pueden evitar los "bloqueos" del hilo principal JavaScript.

¿Por Qué Importan los Core Web Vitals? SEO, UX y Tasas de Conversión

La importancia de los Core Web Vitals trasciende el ámbito puramente técnico o SEO. Al centrarse en la experiencia del usuario, estas métricas se convierten en pilares estratégicos para cualquier negocio o proyecto online. Su impacto se siente directamente en el posicionamiento orgánico, la satisfacción del cliente y, crucialmente, en los resultados económicos.

SEO Mobile-First y la Experiencia del Usuario

Desde hace años, Google ha adoptado una estrategia de "mobile-first indexing", lo que significa que el contenido y el rendimiento de la versión móvil de su sitio son los principales factores que Google considera para la indexación y la clasificación. En este escenario, los Core Web Vitals adquieren una relevancia aún mayor.

  • Prioridad Móvil: Los usuarios móviles a menudo operan en redes con ancho de banda y latencia variables. Un sitio lento o inestable visualmente impacta de manera desproporcionada a estos usuarios. Google lo sabe y, por lo tanto, premia a los sitios que ofrecen una experiencia fluida en dispositivos móviles.
  • Señal de Clasificación Indirecta y Directa: Aunque LCP, INP y CLS son factores de clasificación directos como parte de la "Page Experience", también influyen indirectamente en el SEO. Una buena experiencia de usuario conduce a una menor tasa de rebote, un mayor tiempo en la página y más interacciones, señales que Google interpreta como indicativas de un sitio valioso.
  • Competencia por la Atención: En un entorno digital saturado, la primera impresión es vital. Un sitio que carga lentamente o que presenta problemas visuales puede llevar a que un usuario abandone la página antes de que el contenido principal sea siquiera visible, beneficiando a la competencia que ofrece una experiencia superior.

El Impacto Directo en las Tasas de Conversión

Aquí es donde la optimización de los Core Web Vitals se traduce directamente en beneficios económicos. La relación entre el rendimiento del sitio web y la tasa de conversión está bien documentada y es indiscutible.

  • Frustración del Usuario: Los usuarios son impacientes. Un retraso de unos pocos segundos puede generar frustración, lo que se traduce en abandono del carrito, cierre de la pestaña o huida del sitio. Es una pérdida de potencial cliente y de ingresos.
  • Confianza y Profesionalismo: Un sitio web que funciona de manera fluida y sin problemas visuales comunica profesionalismo y fiabilidad. Esto construye confianza en el usuario, lo cual es fundamental para cualquier transacción o compromiso a largo plazo.
  • Experiencia de Compra Fluida: Especialmente en el comercio electrónico, cada paso del embudo de ventas debe ser impecable. Retrasos en la carga de imágenes de productos (LCP), inactividad del botón "Añadir al carrito" (INP) o saltos inesperados que hacen clic en el elemento equivocado (CLS) son barreras directas para la conversión.

Números Reales: El Costo de la Lentitud

Para ilustrar la magnitud del impacto, a continuación, se presentan algunos estudios y cifras clave que demuestran cómo la velocidad y la experiencia del usuario afectan directamente el rendimiento del negocio:

  • Akamai: En un estudio clásico, Akamai encontró que un retraso de 100 milisegundos en el tiempo de carga de la página puede disminuir las tasas de conversión hasta en un 7%. Un retraso de 2 segundos puede aumentar drásticamente la tasa de rebote. Esto se traduce rápidamente en millones de euros o dólares perdidos para empresas de comercio electrónico.

    "Every 100-millisecond delay in mobile load time can impact conversion rates by up to 7%."

    — Akamai, "State of Online Retail Performance"
  • Deloitte: "Milliseconds Make Millions": Un informe de Deloitte titulado "Milliseconds Make Millions" analizó cómo las mejoras en la velocidad del sitio pueden generar ingresos adicionales sustanciales para los minoristas. Encontraron que incluso una mejora de 0.1 segundos en la velocidad del sitio puede generar un aumento de hasta un 8% en las tasas de conversión para los minoristas, especialmente en dispositivos móviles.

    "Even a 0.1-second improvement in site speed can lead to an 8% increase in conversion rates for retail sites."

    — Deloitte, "Milliseconds Make Millions"
  • Google (Estudios de Caso): Google mismo ha publicado numerosos estudios de caso donde minoristas y sitios de medios han experimentado mejoras significativas en sus indicadores clave de rendimiento (KPIs) después de optimizar sus Core Web Vitals. Por ejemplo, al mejorar el LCP, algunos sitios vieron un aumento en las vistas de página y en la duración de las sesiones.
  • Walmart: Un estudio interno de Walmart reveló que por cada segundo que mejoraban el tiempo de carga de sus páginas, las conversiones aumentaban en un 2%.

Estos ejemplos no son anécdotas aisladas; son la prueba irrefutable de que la optimización del rendimiento no es un lujo, sino una necesidad estratégica. Invertir en Core Web Vitals es invertir en SEO, en la satisfacción del cliente y, en última instancia, en el crecimiento del negocio.

Field Data vs. Lab Data: Entendiendo las Diferencias

Para medir y optimizar los Core Web Vitals de manera efectiva, es fundamental comprender la diferencia entre los datos de "campo" (field data) y los datos de "laboratorio" (lab data). Ambos tipos de datos son valiosos, pero ofrecen perspectivas distintas y complementarias sobre el rendimiento de su sitio web.

Datos de Campo (Field Data): CrUX y RUM

Los datos de campo, también conocidos como Real User Monitoring (RUM), provienen de usuarios reales que interactúan con su sitio web en condiciones reales (dispositivos, redes, ubicaciones variables). Estos datos son los que Google utiliza directamente para la señal de Page Experience en sus algoritmos de clasificación.

  • Chrome User Experience Report (CrUX):
    • Descripción: CrUX es un conjunto de datos público que recopila métricas de la experiencia de usuario de millones de sitios web que cumplen con ciertos criterios de popularidad. Estos datos provienen de usuarios reales de Chrome que han optado por sincronizar su historial de navegación y estadísticas de uso.
    • Ventajas: Representa la experiencia real del usuario; es la "verdadera fuente" para Google en términos de Page Experience. Está disponible para cualquier sitio web en varias herramientas de Google (PageSpeed Insights, Search Console, CrUX Dashboard, BigQuery).
    • Desventajas: Los datos se agregan mensualmente y tienen un retraso de 28 días, lo que significa que las mejoras recientes pueden tardar en reflejarse. Solo incluye usuarios de Chrome y requiere un umbral mínimo de tráfico para que aparezcan datos. No ofrece datos granulares a nivel de sesión o usuario individual.
  • Real User Monitoring (RUM) implementado por uno mismo:
    • Descripción: Consiste en instrumentar su propio sitio web con JavaScript para recopilar métricas de rendimiento directamente desde los navegadores de sus usuarios. Esto puede hacerse con librerías como la de Google web-vitals o con soluciones comerciales de RUM.
    • Ventajas: Proporciona datos de rendimiento para el 100% de sus usuarios (o un porcentaje configurable), no solo los de Chrome. Permite segmentar datos por tipo de dispositivo, ubicación geográfica, versión del navegador, etc., para identificar problemas específicos. Ofrece datos en tiempo real o casi real, lo que permite una respuesta rápida a las regresiones.
    • Desventajas: Requiere implementación y mantenimiento. Puede añadir una sobrecarga de rendimiento mínima si no se gestiona correctamente.

Datos de Laboratorio (Lab Data): Lighthouse y Más

Los datos de laboratorio se recopilan en un entorno controlado, utilizando herramientas automatizadas. Estos datos son consistentes y reproducibles, lo que los hace ideales para la depuración y para probar cambios durante el desarrollo.

  • Lighthouse:
    • Descripción: Lighthouse es una herramienta de auditoría automatizada de código abierto desarrollada por Google que puede ejecutarse en Chrome DevTools, como extensión de Chrome, o como módulo NPM. Simula la carga de una página en un entorno predefinido (por ejemplo, móvil con una conexión 3G lenta simulada).
    • Ventajas: Proporciona un entorno consistente para la depuración y comparación de rendimiento. Ofrece sugerencias de optimización detalladas y acciones concretas. Es fácil de integrar en flujos de trabajo de CI/CD.
    • Desventajas: No representa la experiencia real de todos sus usuarios. La simulación puede no replicar exactamente las condiciones del mundo real (CPU throttling, red, etc.). La puntuación de Lighthouse 100/100 no garantiza buenos Core Web Vitals de campo.
  • PageSpeed Insights (PSI):
    • Descripción: Herramienta online de Google que utiliza datos de campo de CrUX y datos de laboratorio de Lighthouse para proporcionar un informe completo sobre el rendimiento de una URL específica.
    • Ventajas: Combina ambos tipos de datos en una sola interfaz. Es muy fácil de usar para obtener una visión general rápida.
    • Desventajas: Los datos de campo pueden no estar disponibles si su sitio no tiene suficiente tráfico en CrUX. Los datos de laboratorio son solo una instantánea y pueden variar ligeramente entre ejecuciones.
  • Chrome DevTools:
    • Descripción: Las herramientas de desarrollo integradas en el navegador Chrome. Permiten auditar el rendimiento, inspeccionar la red, el uso de memoria, simular diferentes dispositivos y velocidades de red, y ofrecen valiosas pestañas como "Performance" y "Lighthouse".
    • Ventajas: Muy potente para depuración local durante el desarrollo. Ofrece una visión granular de la ejecución del JavaScript, la renderización y los eventos de diseño.
    • Desventajas: Requiere conocimientos técnicos para interpretar los datos. Las mediciones pueden verse afectadas por el entorno de desarrollo local (extensiones, procesos en segundo plano).

El Importante Percentil 75

Umbrales oficiales de Google: bueno, mejorable, insuficiente

Cuando Google evalúa los Core Web Vitals para la clasificación, utiliza el percentil 75 de los datos de campo. Esto es crucial de entender.

  • ¿Qué significa el percentil 75? Significa que el 75% de las visitas de su página deben cumplir con los umbrales de "bueno" para cada Core Web Vital para que Google considere que la página tiene una buena experiencia de página en esa métrica. El otro 25% de visitas puede ser "mejorable" o "malo".
  • ¿Por qué el percentil 75 y no el promedio? El promedio puede ser engañoso, ya que unos pocos valores extremadamente buenos o malos pueden sesgar la media. El percentil 75 ofrece una medida más robusta de cómo se comporta la página para la mayoría de sus usuarios, incluyendo aquellos con condiciones de red o dispositivo menos ideales. Es una forma de asegurar que un número significativo de usuarios (75%) tenga una buena experiencia.
  • Umbrales Oficiales:
    • LCP: Bueno (≤ 2.5s), Mejorable (> 2.5s y ≤ 4.0s), Pobre (> 4.0s)
    • INP: Bueno (≤ 200ms), Mejorable (> 200ms y ≤ 500ms), Pobre (> 500ms)
    • CLS: Bueno (≤ 0.1), Mejorable (> 0.1 y ≤ 0.25), Pobre (> 0.25)

Esto implica que no es suficiente optimizar su sitio para que funcione bien en su supercomputadora con fibra óptica. Necesita asegurarse de que una abrumadora mayoría de sus usuarios, incluyendo aquellos con dispositivos más antiguos o conexiones más lentas, también tengan una experiencia excelente.

La Librería `web-vitals` para RUM

Para aquellos que desean implementar su propio Real User Monitoring (RUM) para los Core Web Vitals, Google proporciona una librería JavaScript ligera y fácil de usar llamada web-vitals. Este paquete npm permite recopilar las métricas LCP, INP, CLS (y otras secundarias) directamente en el lado del cliente y enviarlas a sus propias herramientas de análisis (Google Analytics, su propio backend, etc.).

Un ejemplo básico de uso se explicará en la sección de herramientas, pero su valor reside en proporcionar una visibilidad real y personalizada de cómo sus usuarios experimentan su sitio.

LCP: Largest Contentful Paint

El Largest Contentful Paint (LCP) es la primera de las tres métricas principales de los Core Web Vitals, y se enfoca en la velocidad de percepción de la carga. Es una métrica crucial porque capta cuándo el contenido principal de una página probablemente se ha cargado y es visible para el usuario, brindando una primera impresión crítica.

Definición y Umbrales

Definición: LCP mide el tiempo que tarda el elemento de contenido más grande visible dentro de la ventana del navegador en renderizarse. Este elemento puede ser una imagen, un bloque de texto grande, un video, o una imagen de fondo con propiedades CSS. El navegador va registrando el "mayor contenido" durante la carga y la interacción inicial, actualizándolo dinámicamente hasta que la página se vuelve estable o el usuario interactúa.

Umbrales Oficiales (Percentil 75):

  • Bueno: ≤ 2.5 segundos
  • Mejorable: > 2.5 segundos y ≤ 4.0 segundos
  • Pobre: > 4.0 segundos

Un LCP rápido es fundamental porque los usuarios juzgan rápidamente la velocidad y la calidad de un sitio basándose en lo rápido que ven el contenido principal. Si tardan en ver lo central de la página, la frustración puede llevar al abandono.

Elementos Candidatos al LCP

El navegador considera varios tipos de elementos al determinar el LCP. Es vital identificar cuál es el elemento LCP de su página en particular, ya que la optimización se centrará en ese activo.

Los elementos típicamente considerados candidatos para el LCP incluyen:

  • Elementos <img>.
  • Elementos <image> dentro de <svg>.
  • Elementos <video> con imágenes de póster.
  • Elementos con una imagen de fondo cargada a través de la función url() de CSS (no los gradientes CSS).
  • Elementos de nivel de bloque que contienen nodos de texto a nivel de línea o elementos de texto secundarios. Esto incluye encabezados (<h1>, <h2>, etc.), párrafos (<p>), listas, etc.

El elemento LCP se determina en el momento en que se renderiza, no en el momento en que se carga completamente. Su tamaño se mide por su tamaño visible en la ventana gráfica (o su tamaño intrínseco si sale de la ventana), excluyendo márgenes, rellenos y bordes CSS. Si un elemento sale de la pantalla o se vuelve invisible, ya no se considera el Largest Contentful Paint.

Causas de un LCP Pobre

Un LCP elevado suele ser el resultado de uno o más de los siguientes factores:

  1. Tiempos de respuesta lentos del servidor (TTFB alto):
    • Si el servidor tarda en responder a la solicitud inicial del documento HTML, todo lo demás se retrasa. El TTFB (Time To First Byte) es un cuello de botella fundamental.
  2. Recursos que bloquean el renderizado (Render-Blocking Resources):
    • JavaScript: Los archivos JavaScript que no son asíncronos o diferidos pueden bloquear la renderización del HTML hasta que se descargan, analizan y ejecutan.
    • CSS: Las hojas de estilo grandes o mal optimizadas bloquean la renderización hasta que se cargan y analizan.
    • Fuentes: La carga de fuentes personalizadas puede bloquear la renderización del texto, causando CLS o LCP pobre si el texto es el elemento LCP.
  3. Tiempos de carga de recursos lentos:
    • Imágenes grandes/sin optimizar: Si el elemento LCP es una imagen (que suele ser el caso), y esta imagen es muy pesada, no está optimizada (compresión, formato), o se carga de una fuente lenta, impactará negativamente el LCP.
    • Videos: Lo mismo aplica para videos, especialmente si no están optimizados o se cargan antes de lo necesario.
  4. Tiempo de renderizado del cliente (Client-Side Rendering):
    • Para aplicaciones de una sola página (SPAs) que dependen fuertemente de JavaScript para renderizar el contenido, el LCP puede ser alto si hay mucha lógica JS que debe ejecutarse antes de que el contenido principal sea visible. Un JavaScript ineficiente o pesado puede retrasar la renderización.
  5. Imágenes con Lazy-Loading incorrecto:
    • Utilizar loading="lazy" en una imagen que es el elemento LCP es un error común. Esto pospone la carga de la imagen, aumentando directamente el LCP.

Estrategias de Optimización para LCP

La optimización de LCP es un proceso multifacético que abarca desde la configuración del servidor hasta el código front-end.

  1. Mejorar el tiempo de respuesta del servidor (TTFB):
    • Optimización del Servidor: Acelerar las consultas a la base de datos, optimizar la lógica del servidor, usar un servidor más potente.
    • Caching: Implementar un caching robusto en el servidor (CDN, caché de página completa).
    • CDN (Content Delivery Network): Para activos estáticos y, a menudo, para el HTML mismo. Un CDN acerca los contenidos geográficamente a los usuarios, reduciendo la latencia de red.
    • Preconexión (preconnect, dns-prefetch): Establecer conexiones anticipadas a orígenes críticos de terceros.
    • Service Workers (precaching): Para futuras visitas, un Service Worker puede precargar el HTML y otros recursos clave.
  2. Eliminar recursos que bloquean el renderizado:
    • JS:
      • Usar async o defer para scripts que no son críticos para el renderizado inicial.
      • Mover scripts no críticos al final del <body>.
      • Dividir el código (code splitting) para cargar solo el JS que se necesita en cada página.
      • Minificar y comprimir JS.
    • CSS:
      • Extraer el CSS crítico (critical CSS) y embeberlo directamente en el <head> del HTML.
      • Cargar el resto del CSS de forma asíncrona o con <link rel="preload" as="style" onload="this.onload=null;this.rel='stylesheet'">.
      • Minificar y comprimir CSS no utilizado.
      • Eliminar CSS no utilizado (CSS Unused).
  3. Optimizar imágenes y otros recursos LCP:
    • Imágenes Responsivas: Usar <img srcset> y <picture> para servir la imagen del tamaño y resolución adecuados para cada dispositivo.
    • Compresión y Formatos Modernos: Usar formatos como WebP o AVIF que ofrecen mejor compresión que JPG/PNG. Comprimir imágenes adecuadamente sin perder calidad.
    • Precarga (preload): Si se sabe que una imagen o fuente es el elemento LCP, usar <link rel="preload"> en el <head> para que el navegador la descubra y priorice su carga lo antes posible.
    • Prioridad de Fetch (fetchpriority="high"): Atributo relativamente nuevo que indica al navegador que un recurso es de alta prioridad. Útil para el elemento LCP (imagen o texto).
    • Evitar Lazy-Loading del LCP: Asegurarse de que el elemento LCP no tenga el atributo loading="lazy". Para imágenes por debajo del pliegue (below the fold), el lazy-loading es beneficioso.
  4. Pre-renderización y Pre-conexión:
    • <link rel="preconnect">: Para establecer una conexión temprana con los dominios externos donde se alojan recursos críticos (ej: CDN de imágenes, CDN de fuentes, APIs de terceros).
    • <link rel="dns-prefetch">: Para resolver el DNS de orígenes externos antes de que se necesiten los recursos.
    • <link rel="prerender"> (Experimental/Limitado): Puede precargar una página completa en segundo plano para una navegación instantánea, pero úsese con cautela.

Ejemplos de Código y Estrategias

1. Precargar una imagen LCP: Si la imagen principal de su hero de página suele ser el LCP, asegúrese de precargarla:

<head>
    <!-- Preload la imagen LCP con prioridad alta -->
    <link rel="preload" as="image" href="/path/to/hero-image.webp" fetchpriority="high">
</head>
<body>
    <img src="/path/to/hero-image.webp" alt="Descripción de la imagen" loading="eager" fetchpriority="high">
</body>

Note el fetchpriority="high" en el link preload y en la etiqueta img misma. Esto es especialmente útil para Chrome. El loading="eager" evita que el navegador aplique lazy-loading por defecto si la imagen está en la ventana visible.

2. Imágenes Responsivas y Optimización de Formato:

<picture>
    <source srcset="/path/to/hero-image.avif" type="image/avif">
    <source srcset="/path/to/hero-image.webp" type="image/webp">
    <img src="/path/to/hero-image.jpg" alt="Descripción" width="1200" height="600"
         loading="eager" fetchpriority="high">
</picture>

La etiqueta <picture> permite al navegador elegir el formato más moderno (AVIF, WebP) o volver a un JPG/PNG si el navegador no soporta los más modernos. Definir width y height explícitamente evita CLS y ayuda al navegador a reservar espacio. El uso de srcset sería para diferentes resoluciones y tamaños.

3. CSS Crítico (Critical CSS):

Extraer el CSS necesario para el contenido "above the fold" y embeberlo:

<head>
    <style>
        /* CSS crítico va aquí */
        .hero { background-color: #f0f0f0; }
        .main-heading { font-size: 2em; color: #333; }
    </style>
    <link rel="stylesheet" href="/path/to/full-styles.css" media="print" onload="this.media='all'">
</head>

El truco media="print" onload="this.media='all'" carga el CSS completo de forma asíncrona, sin bloquear el renderizado inicial. Primero se carga como 'print' (no bloqueante) y una vez cargado, se cambia a 'all'.

4. Scripts no bloqueantes:

<!-- Script que puede ser diferido -->
<script src="/path/to/non-critical-script.js" defer></script>

<!-- Script que no depende de otros para ejecutarse, puede ser asíncrono -->
<script src="/path/to/analytics.js" async></script>

defer retrasa la ejecución del script hasta que el HTML ha sido completamente parseado. async permite que el script se descargue en paralelo con el parseo del HTML y se ejecute tan pronto como esté disponible, sin garantizar el orden de ejecución.

La optimización de LCP es a menudo la más impactante en términos de percepción del usuario. Es recomendable abordar primero las causas más comunes: TTFB, imágenes LCP y recursos bloqueantes.

INP: Interaction to Next Paint

Interaction to Next Paint (INP) es la nueva métrica principal para medir la capacidad de respuesta (responsiveness) del sitio web. Reemplazó oficialmente a First Input Delay (FID) en marzo de 2024. Su objetivo es proporcionar una evaluación más exhaustiva y precisa de cómo una página responde a las interacciones del usuario a lo largo de todo su ciclo de vida.

INP: Reemplazando FID desde Marzo de 2024

La transición de FID a INP marca un paso significativo en cómo Google evalúa la interactividad. Mientras que FID solo medía el retraso que experimentaba el navegador entre la primera interacción del usuario y el punto en que el navegador podía empezar a procesar esa interacción (es decir, el tiempo que el hilo principal estaba bloqueado), INP es mucho más abarcador.

Limitaciones de FID:

  • Solo consideraba la primera interacción. Esto significaba que si la primera interacción era rápida, pero todas las interacciones subsiguientes eran lentas, FID reportaría un buen resultado a pesar de una mala experiencia real.
  • Solo medía la latencia de entrada (input delay), no el tiempo total que tomaba la interacción para producir una actualización visual.

Ventajas de INP:

  • Cobertura Completa: INP evalúa todas las interacciones (clics, toques, pulsaciones de teclas) que ocurren durante la vida de una página, desde que se carga hasta que el usuario la abandona.
  • Latencia Integral: Mide el tiempo total desde que el usuario inicia la interacción hasta que el navegador pinta el siguiente fotograma visual que refleja el resultado de esa interacción. Esto incluye el retraso de entrada, el tiempo de procesamiento y el retraso de presentación.
  • Representatividad: Reporta un valor representativo de la latencia de interacción (típicamente el percentil 98 de todas las interacciones observadas para una página, si hay varias).

Este cambio es crítico. Los sitios web que tenían un buen FID podrían ahora tener un mal INP si sus interacciones subsiguientes o el procesamiento del evento en sí son ineficientes.

Definición y Umbrales

Definición: INP mide la latencia de una interacción, desde el momento en que el usuario inicia la acción (ej. un clic) hasta el momento en que se pinta el siguiente fotograma visual en el navegador, mostrando el resultado de esa acción. Para una página dada, INP es el valor más alto o un valor representativo (perc. 98) observado entre todas las interacciones.

Una "interacción" se define como un grupo de eventos (ej. pointerdown, mousedown, pointerup, mouseup, click para un clic de ratón) que ocurren como parte de la misma acción lógica del usuario.

Umbrales Oficiales (Percentil 75):

  • Bueno: ≤ 200 milisegundos
  • Mejorable: > 200 milisegundos y ≤ 500 milisegundos
  • Pobre: > 500 milisegundos

Estos umbrales significan que el 75% de las interacciones de los usuarios en su sitio deben ser rápidas y eficientes para cumplir los criterios de Google.

¿Qué Mide INP?

INP se descompone en tres fases principales:

  1. Input Delay (Retraso de Entrada):
    • Tiempo desde que el usuario inicia la interacción hasta que los event listeners asociados (ej. click) comienzan a ejecutarse.
    • Esto ocurre a menudo cuando el hilo principal (main thread) está ocupado con tareas de larga duración (long tasks), como la ejecución de JavaScript.
  2. Processing Time (Tiempo de Procesamiento):
    • Tiempo que tardan los event listeners en ejecutarse.
    • Si el código dentro del event listener es complejo o realiza muchas operaciones DOM, contribuirá directamente al tiempo de procesamiento.
  3. Presentation Delay (Retraso de Presentación):
    • Tiempo que tarda el navegador en pintar la siguiente actualización visual en pantalla después de que se han ejecutado los event listeners.
    • Puede ser causado por tareas de renderizado pesadas, re-cálculos de estilo y layout, o por el navegador esperando el frame siguiente después de que se ha terminado de procesar el evento.

El objetivo es minimizar la duración de estas tres fases combinadas para todas las interacciones.

Causas de un INP Pobre

Un INP elevado suele indicar que el hilo principal de JavaScript está sobrecargado, impidiendo que el navegador responda a las interacciones o actualice la interfaz de usuario de manera oportuna.

  1. Tareas de Larga Duración (Long Tasks) en el Hilo Principal:
    • Cualquier tarea de JavaScript que se ejecute durante más de 50 milisegundos se considera una "long task" y bloquea el hilo principal. Si estas tareas ocurren cuando un usuario intenta interactuar, causarán un retraso significativo.
    • Ejemplos: Cálculos complejos, grandes bucles, manipulación intensiva del DOM, scripts de terceros pesados.
  2. Fugas de Memoria en Listeners de Eventos:
    • Event listeners que no se han limpiado correctamente, o que realizan operaciones DOM excesivas o innecesarias.
    • Listeners de eventos que disparan re-layouts o re-paints costosos.
  3. Hydration Pesada en SPAs y Frameworks (React, Vue):
    • En aplicaciones que usan frameworks como React o Vue, el proceso de "hidratación" (attaching event listeners and making the UI interactive after server-side rendering) puede ser una tarea de larga duración. Si esto ocurre cuando el usuario está intentando interactuar, el INP se verá afectado.
    • El exceso de componentes interactivos con event handlers puede contribuir a esto.
  4. JavaScript Bloqueante durante la Carga:
    • Aunque esto afecta más a LCP y FCP, un JS pesado que se descarga y ejecuta durante la fase inicial de carga puede seguir bloqueando el hilo principal hasta mucho después. Si un usuario interactúa en ese período, el INP será alto.
  5. Animaciones CSS o Manipulaciones DOM Ineficientes:
    • Aunque menos común, animaciones complejas que requieren muchos cálculos de estilo/layout o manipulaciones DOM que fuerzan repaints pueden consumir el hilo principal y afectar al INP.

Estrategias de Optimización para INP

La clave para un buen INP es liberar el hilo principal JavaScript y asegurar que las interacciones sean lo más ligeras y rápidas posible.

  1. Dividir Tareas Largas (Break up Long Tasks):
    • Yield to Main Thread (Cedera al Hilo Principal): En lugar de ejecutar una tarea JavaScript grande de una sola vez, divídala en tareas más pequeñas y asíncronas, permitiendo que el navegador procese otros eventos (incluidas las interacciones) entre cada subtarea.
      • Utilice setTimeout(..., 0) o requestIdleCallback() (para tareas no críticas) para dividir el trabajo.
      • Utilice scheduler.yield() (API experimental pero prometedora) para ceder explícitamente el control al navegador.
    • Utilizar Web Workers: Offload tareas computacionales pesadas a un Web Worker. Esto permite que el hilo principal permanezca libre para responder a las interacciones del usuario.
  2. Optimizar Event Listeners:
    • Debounce y Throttle: Para eventos que se disparan con frecuencia (ej. scroll, resize, mousemove), limite la frecuencia de ejecución de sus handlers con técnicas de debounce o throttle.
    • Eliminar Listeners Innecesarios: Asegúrese de que los event listeners solo se adjunten cuando sea necesario y se eliminen cuando un elemento ya no está en el DOM o ya no necesita interactividad.
    • Evitar Operaciones DOM Costosas: Agrupe las lecturas y escrituras del DOM para minimizar los re-layouts y re-paints. Evite llamar al DOM en bucles.
  3. Code Splitting y Carga Progresiva de JS:
    • Divida su bundle de JavaScript en trozos más pequeños y cárguelos solo cuando sean necesarios (lazy loading de componentes o funcionalidades) usando import() dinámicos.
    • Esto reduce la cantidad de JavaScript inicial que el navegador tiene que analizar y ejecutar, liberando el hilo principal antes.
  4. Server-Side Rendering (SSR) y Static Site Generation (SSG):
    • Reducen la cantidad de JS necesario para la renderización inicial, lo que lleva a un menor "total blocking time" (TBT) y una interactividad más temprana.
    • Para frameworks con SSR, optimice la hidratación para que sea lo más eficiente posible, posiblemente usando "partial hydration" o "islands architecture" si su framework lo soporta.
  5. Minimizar la Carga de Terceros:
    • Los scripts de terceros (analíticas, anuncios, widgets de chat, etc.) son una causa común de tareas largas y bloqueo del hilo principal.
    • Retrase la carga de scripts no esenciales o cárguelos con async/defer.
    • Considere soluciones self-hosted o de código abierto para algunas funcionalidades si las opciones de terceros son demasiado pesadas.
  6. Utilizar Content-Visibility (experimental y con precaución):
    • La propiedad CSS content-visibility: auto; puede ayudar a saltar el renderizado de contenido fuera de pantalla, potencialmente liberando recursos del hilo principal. Úsela con cautela ya que puede tener impactos inesperados en CLS.

Ejemplos de Código y Técnicas

1. Dividir una tarea de larga duración con setTimeout:

// Tarea original pesada
function processHeavyData() {
    // Simula una gran cantidad de trabajo
    for (let i = 0; i < 100000; i++) {
        // Realizar cálculos o manipulaciones DOM
        document.body.appendChild(document.createElement('div'));
        if (i % 1000 === 0) {
            console.log(`Procesando item ${i}`);
        }
    }
}

// Versión dividida
function processHeavyDataChunked(dataArray, startIndex = 0) {
    const chunkSize = 50; // Procesar 50 ítems a la vez
    const endIndex = Math.min(startIndex + chunkSize, dataArray.length);

    for (let i = startIndex; i < endIndex; i++) {
        // Realizar cálculos o manipulaciones DOM para una pequeña parte
        document.body.appendChild(document.createElement('div'));
    }

    if (endIndex < dataArray.length) {
        // Si aún hay trabajo, cedemos al hilo principal y programamos la próxima
        setTimeout(() => processHeavyDataChunked(dataArray, endIndex), 0);
    } else {
        console.log('Procesamiento completado.');
    }
}

const largeDataSet = new Array(10000).fill(0);
// Para iniciar:
// processHeavyDataChunked(largeDataSet);

Este patrón permite que el navegador realice otras tareas (como responder a interacciones del usuario) entre cada "chunk" de procesamiento.

2. Uso de scheduler.yield() (Próxima API): Esta API, aunque aún experimental, ofrece una forma más directa de ceder el control.

async function processHeavyDataWithYield() {
    for (let i = 0; i < 10000; i++) {
        // Hacer algo
        if (i % 50 === 0) {
            // Ceder control al navegador cada 50 iteraciones
            await scheduler.yield();
        }
    }
    console.log('Procesamiento completado con yield.');
}

// Para iniciar:
// processHeavyDataWithYield();

Esto proporciona una interfaz más limpia y explícita para la división de tareas.

3. Lazy Loading de Componentes (ej. en React):

// Componente pesado cargado bajo demanda
const HeavyComponent = React.lazy(() => import('./HeavyComponent'));

function App() {
  return (
    <div>
      <h1>Mi Aplicación</h1>
      <React.Suspense fallback={<div>Cargando...</div>}>
        <HeavyComponent />
      </React.Suspense>
    </div>
  );
}

El HeavyComponent solo se descargará y renderizará cuando sea necesario, reduciendo el JS inicial y el tiempo de bloqueo.

La optimización de INP puede ser más compleja que LCP, ya que implica una depuración profunda del código JavaScript y una arquitectura de aplicación consciente del rendimiento. Sin embargo, su impacto en la percepción de "fluidez" y capacidad de respuesta del usuario es enorme.

CLS: Cumulative Layout Shift

Cumulative Layout Shift (CLS) es el tercer Core Web Vital y se centra en la estabilidad visual de una página web. Mide la cantidad de cambios de layout inesperados que ocurren en el viewport mientras la página se está cargando y durante la interacción del usuario. Un CLS bajo es indicativo de una página estable y profesional que no frustra al usuario con movimientos inesperados de contenido.

Definición y Umbrales

Definición: CLS mide la suma de todas las puntuaciones de cambios de layout individuales inesperados que ocurren en una página. Un "cambio de layout" ocurre cuando un elemento visible cambia su posición de inicio en el viewport entre dos frames renderizados. Estos cambios suelen ser molestos, haciendo que los usuarios pierdan su lugar, hagan clic en el elemento equivocado o simplemente se sientan frustrados.

La puntuación de un cambio de layout se calcula multiplicando dos factores:

  1. Impact Fraction (Fracción de Impacto): Mide cuánto del viewport es afectado por un cambio de layout. Es el área combinada de todos los elementos inestables que se movieron, dividido por el área total del viewport.
  2. Distance Fraction (Fracción de Distancia): Mide la distancia en que los elementos inestables se movieron, dividida por la dimensión más grande del viewport (ancho o alto).

CLS = Impacto x Distancia

Es un número sin unidades y cuanto más bajo, mejor.

Umbrales Oficiales (Percentil 75):

  • Bueno: ≤ 0.1
  • Mejorable: > 0.1 y ≤ 0.25
  • Pobre: > 0.25

El significado es claro: Google quiere que menos del 10% del viewport se vea afectado por movimientos inesperados, y que esos movimientos sean mínimos en distancia.

Session Windows en CLS

Inicialmente, CLS sumaba el total de cambios de layout durante toda la vida de la página. Sin embargo, esto presentaba un problema para páginas de larga duración (ej. aplicaciones de una sola página, feeds infinitos) donde los cambios de layout esperados (ej. cargar más contenido) podían acumular una puntuación CLS "mala" a pesar de ser una buena experiencia.

Para mitigar esto, Google introdujo el concepto de "session windows". Ahora, se acumulan las puntuaciones de los cambios de layout que ocurren en rápida sucesión. Una "ventana de sesión" para CLS es un período de tiempo donde los cambios de layout ocurren dentro de 1 segundo de cualquier cambio de layout anterior, con una duración máxima de 5 segundos. El valor de CLS reportado para una página es el valor máximo de CLS resultante de cualquier ventana de sesión en la página.

Esto significa que los cambios de layout aislados y esperados (ej. un modal que aparece después de un clic del usuario) que no ocurren simultáneamente con otros elementos moviéndose no deberían penalizar tanto la métrica global de CLS, siempre y cuando no se encadenen cambios inesperados.

Causas de un CLS Negativo

Los cambios de layout inesperados generalmente ocurren cuando el contenido se carga de forma asíncrona o se inserta dinámicamente, y el navegador no puede reservar el espacio adecuado antes de que estos elementos aparezcan.

  1. Imágenes sin dimensiones explícitas:
    • La causa más común. Si las etiquetas <img> no tienen atributos width y height, o si las imágenes responsivas no tienen CSS que reserve su espacio (ej. con aspect-ratio), el navegador no sabe cuánto espacio ocuparán y el contenido de abajo se moverá cuando las imágenes se carguen.
  2. Contenido inyectado dinámicamente:
    • Banners de anuncios, widgets de chat, pop-ups, notificaciones de cookies u otros componentes que se inyectan en el DOM sin haber reservado espacio previamente.
    • Esto es particularmente problemático si se inyectan en la parte superior o en el medio del contenido visible.
  3. Fuentes web (Web Fonts) que causan FOIT/FOUT:
    • FOIT (Flash of Invisible Text): Si una fuente personalizada tarda en cargar y el texto permanece invisible hasta que la fuente está disponible, cuando aparece, puede causar un salto si su tamaño difiere de la fuente de fallback.
    • FOUT (Flash of Unstyled Text): Si se muestra primero una fuente de fallback y luego se intercambia por la fuente personalizada, el cambio de estilos y tamaños puede provocar un desplazamiento del layout.
    • font-display: swap es una solución común para FOUT, pero aún puede causar CLS si la fuente personalizada tiene métricas muy diferentes.
  4. Anuncios o incrustaciones (embeds) mal gestionados:
    • Los anuncios suelen ser un gran contribuyente al CLS si los espacios publicitarios no tienen un tamaño fijo o no se les reserva espacio. Los proveedores de anuncios dinámicos son un problema común.
    • Incrustaciones de videos de YouTube, mapas de Google Maps, tweets, etc., sin dimensiones fijas.
  5. Acciones que desencadenan cambios de Layout después de la carga:
    • Animaciones o transiciones CSS no compuestas (que afectan a la propiedad transform o opacity) que causan cambios de layout.
    • Modificación del DOM por JavaScript que no reserva espacio o mueve elementos existentes sin la interacción del usuario.

Estrategias de Optimización para CLS

La estrategia principal es garantizar que el navegador pueda reservar el espacio adecuado para los elementos antes de que se carguen o se inyecten dinámicamente.

  1. Dimensiones Explícitas para Imágenes y Videos:
    • Siempre incluya los atributos width y height en las etiquetas <img> y <video>.
    • Para imágenes responsivas, use CSS para mantener la misma relación de aspecto:
      img {
          aspect-ratio: attr(width) / attr(height);
          width: 100%; /* Asegura que la imagen sea responsiva */
          height: auto; /* Mantiene la relación de aspecto */
      }
      
    • Para <picture>, asegúrese de que el <img> fallback tenga las dimensiones.
  2. Reservar Espacio para Contenido Inyectado Dinámicamente:
    • Anuncios y Embeds: Cree un contenedor para el anuncio o la incrustación y aplique un min-height o reserve el espacio con CSS antes de que el contenido real se cargue. Si el espacio publicitario es variable, intente dimensionar el slot al tamaño de anuncio más común o a un tamaño fijo que se sepa que funcionará.
    • Widgets: Establezca el tamaño inicial de los widgets de chat, pop-ups, etc., antes de su inicialización.
    • Banners de Cookies/Notificaciones: Si un banner aparecerá en la parte superior, considere mostrarlo con un espacio predefinido o empujar el contenido hacia abajo de forma controlada, en lugar de moverlo de manera disruptiva.
  3. Gestionar las Fuentes Web de Forma Óptima:
    • font-display: optional o font-display: swap:
      • swap permite cambiar de fuente de fallback a fuente web tan pronto como esté descargada. Esto es mejor que FOIT, pero puede causar CLS.
      • optional solo mostrará la fuente web si se descarga muy rápido, si no, se usará la de fallback. Esto puede reducir CLS si el navegador no tiene que cambiar entre fuentes.
    • <link rel="preload" as="font" crossorigin>: Precarga las fuentes web críticas, asegurando que estén disponibles antes de que se necesiten, reduciendo la probabilidad de FOIT/FOUT.
    • size-adjust, ascent-override, descent-override, line-gap-override: Propiedades CSS experimentales en @font-face que permiten al desarrollador ajustar el tamaño de las fuentes de fallback para que coincidan mejor con las fuentes web, minimizando los saltos al cambiar.
  4. Evitar Inyecciones de Contenido Arriba del Pliegue:
    • Si debe inyectar contenido, hágalo en la parte inferior de la página o asegúrese de que haya una interacción del usuario que lo desencadene (ej. un clic en un botón).
    • Siempre reserve espacio para elementos dinámicos que se carguen "above the fold".
  5. Utilizar animaciones y transiciones correctamente:
    • Anime propiedades que no desencadenan re-layouts, como transform y opacity. Evite animar width, height, margin, padding, etc., ya que pueden mover otros elementos.
    • Use will-change: transform; para indicar al navegador que prepare el elemento para la animación.

El CLS es una métrica que exige un diseño y desarrollo cuidadoso. Solucionarlo a menudo implica pequeñas correcciones en el marcado HTML y CSS, junto con una gestión más inteligente de la carga de recursos y la inyección de contenido.

Métricas Secundarias Clave

Métricas secundarias: TTFB, FCP, TBT

Mientras que LCP, INP y CLS son los Core Web Vitals oficiales, existen otras métricas de rendimiento igualmente importantes que Google utiliza internamente y que son valiosas para el diagnóstico y la optimización. Estas métricas secundarias a menudo actúan como indicadores tempranos o causas subyacentes de un CWV deficiente.

TTFB: Time To First Byte

Definición: TTFB mide el tiempo que tarda el navegador en recibir el primer byte de respuesta del servidor después de realizar una solicitud de recurso. Esencialmente, es el tiempo que toma el servidor para procesar la solicitud, buscar la información de la base de datos, ejecutar scripts del lado del servidor y finalmente comenzar a enviar el HTML de vuelta al navegador.

Umbral de Referencia: Un TTFB de menos de 800 ms es considerado bueno por Google. Idealmente, debería ser lo más bajo posible (por debajo de 200 ms si es factible).

Importancia: TTFB es una métrica de "carga cero". Un TTFB alto impacta directamente en el LCP (ya que todo el proceso de carga y renderizado no puede empezar hasta que el HTML llega) y, por ende, en la percepción general de velocidad del usuario. También puede afectar indirectamente a FCP y TBT.

Causas de un TTFB alto:

  • Sobrecarga del servidor (CPU, memoria insuficiente).
  • Consultas a la base de datos lentas o ineficientes.
  • Lógica compleja o ineficiente del lado del servidor.
  • Middleware o plugins pesados en el backend (ej. WordPress, Magento).
  • Redes lentas entre el usuario y el servidor.
  • Falta de caching de página completa en el servidor o CDN.

Optimización:

  • Optimizar el rendimiento del servidor (base de datos, código backend).
  • Utilizar servicios de hosting de alto rendimiento y escalables.
  • Implementar caching a nivel de servidor (Varnish, Redis, caché de base de datos, caché de objetos).
  • Usar un Content Delivery Network (CDN) para HTML dinámico si es posible (ej. con Workers Edge).
  • Optimizar la configuración del servidor web (Nginx, Apache).

FCP: First Contentful Paint

Definición: FCP mide el tiempo desde que la página comienza a cargarse hasta que cualquier parte del contenido de la página es renderizada en la pantalla. Este "contenido" puede ser texto, imágenes (incluidas imágenes de fondo), elementos <svg> o elementos <canvas>. Es el primer punto en que el usuario ve algo útil.

Umbral de Referencia: Un FCP de menos de 1.8 segundos es considerado bueno.

Importancia: FCP proporciona la primera señal visual al usuario de que la página se está cargando. Aunque no necesariamente es el contenido más importante (eso es LCP), un FCP rápido mejora la percepción inicial de velocidad. Un FCP lento a menudo indica problemas con recursos bloqueantes o TTFB.

Causas de un FCP alto:

  • TTFB alto.
  • Recursos que bloquean el renderizado (CSS y JS sobre todo) que impiden que el navegador pinte cualquier cosa.
  • Fuentes web voluminosas que retrasan la visualización del texto.

Optimización:

  • Las mismas estrategias que para TTFB y LCP en cuanto a recursos bloqueantes: optimizar CSS crítico, deferir JS, precargar fuentes.
  • Asegurar que el primer byte de HTML legible se envíe lo antes posible.

TBT: Total Blocking Time

Definición: TBT mide la cantidad total de tiempo que el hilo principal (main thread) de la página estuvo "bloqueado" e impedido de responder a las entradas del usuario (clics, pulsaciones de teclas, etc.). Es la suma del "blocking time" de todas las tareas de larga duración (long tasks) que ocurren entre el FCP y el Time To Interactive (TTI).

Una "long task" es cualquier tarea que se ejecuta en el hilo principal durante más de 50 milisegundos. El "blocking time" de una tarea larga es el tiempo superior a esos 50ms.

Umbral de Referencia: Un TBT de menos de 200 ms es considerado bueno.

Importancia: TBT es una métrica de laboratorio fundamental para diagnosticar problemas de interactividad y es un fuerte predictor de INP. Un TBT alto significa que los usuarios experimentarán retrasos y percibirán la página como "laggy" porque el hilo principal está demasiado ocupado para manejar sus interacciones. Las herramientas de laboratorio como Lighthouse utilizan TBT para calcular su puntuación de rendimiento general.

Causas de un TBT alto:

  • JavaScript pesado durante la carga inicial o la hidratación.
  • Scripts de terceros que bloquean el hilo principal.
  • Ejecución de grandes cantidades de código JS en el hilo principal sin ceder.
  • Manipulaciones DOM complejas.

Optimización:

  • Las mismas estrategias que para INP: dividir tareas largas (yield to main thread, setTimeout), usar web workers, code splitting, lazy loading de JS, optimizar la carga de terceros.
  • Reducir la cantidad de JavaScript que se descarga, analiza, compila y ejecuta inicialmente.

Speed Index

Definición: Speed Index mide cuán rápido se rellena visualmente el contenido de una página durante la carga. Es una métrica basada en la duración de la renderización visual del contenido en la pantalla, calculada como el tiempo promedio en que las partes visibles de la página aparecen en el viewport. Cuanto más bajo sea el valor, más rápido se percibe la carga visual.

Umbral de Referencia: Un Speed Index de menos de 3.4 segundos es considerado bueno.

Importancia: Es una métrica de laboratorio que refleja la velocidad de carga visual de la página de forma integral. A diferencia de FCP o LCP que se enfocan en un único punto, Speed Index da una puntuación general de la progresión de la renderización. Está fuertemente correlacionado con una buena percepción de la velocidad por parte del usuario.

Causas de un Speed Index alto:

  • Recursos que bloquean el renderizado (JS, CSS, fuentes).
  • Imágenes grandes o sin optimizar.
  • TTFB alto.
  • Scripts pesados en el head.

Optimización:

  • Las mismas estrategias que para LCP y FCP: reducir recursos bloqueantes, optimizar imágenes, mejorar TTFB, priorizar la carga de contenido visible.
  • Asegurar que el contenido "above the fold" se renderice lo antes posible.

TTI: Time To Interactive (Obsoleta en Lighthouse 10)

Definición: TTI mide el tiempo que tarda una página en volverse completamente interactiva. Una página se considera "completamente interactiva" cuando se cumplen tres condiciones:

  1. FCP ha ocurrido.
  2. Los controladores de eventos para la mayoría de los elementos visibles han sido registrados.
  3. El hilo principal ha estado inactivo durante al menos 50 ms.

Estado Actual: A partir de Lighthouse 10 (publicado en 2023), TTI ya no es una métrica principal en las auditorías. Aunque sigue siendo útil como métrica complementaria para escenarios específicos, su complejidad y la dificultad para correlacionarla directamente con la experiencia del usuario llevó a que fuera reemplazada en importancia por métricas más centradas en la experiencia del usuario como INP.

Importancia Histórica y Razones del Reemplazo: TTI fue útil para identificar cuándo una página estaba "lista para usar" desde la perspectiva del hilo principal. Sin embargo, su complejidad de cálculo y el hecho de que a veces podía reportar valores engañosos (ej. una página podía ser usable mucho antes de ser "completamente interactiva" según TTI) llevó a Google a buscar métricas más directas para la interactividad, culminando con INP.

A pesar de su obsolescencia como métrica principal, comprender TTI (y la interactividad en general) sigue siendo valioso para un diagnóstico completo del rendimiento.

Herramientas para Medir y Optimizar Core Web Vitals

La optimización efectiva de los Core Web Vitals requiere un conjunto robusto de herramientas. Afortunadamente, Google y la comunidad han desarrollado diversas plataformas y utilities que nos permiten medir, diagnosticar y depurar problemas de rendimiento.

Chrome DevTools

Las herramientas de desarrollo integradas en el navegador Chrome son esenciales para la depuración y análisis en laboratorio.

  • Panel Lighthouse:
    • Permite ejecutar auditorías de Lighthouse directamente. Ideal para verificar el impacto de cambios locales sin subir a un servidor.
    • Proporciona un desglose de las métricas (LCP, CLS, TBT, FCP, Speed Index, etc.) y sugerencias de optimización.
  • Panel Performance (Rendimiento):
    • La herramienta más potente para la depuración detallada. Permite grabar el rendimiento de la carga y las interacciones.
    • Muestra el uso del hilo principal (identificando tareas largas, bloqueos de JavaScript), la actividad de la red, los eventos de renderizado (layout, paint), y los tiempos de vida de los scripts.
    • Crucial para identificar las causas exactas de un INP/TBT pobre y para visualizar los elementos que causan CLS.
  • Panel Network (Red):
    • Análisis detallado de todas las solicitudes de red: cuánto tiempo tardan los recursos en descargarse, el tamaño, el orden de las solicitudes.
    • Útil para diagnosticar problemas de TTFB, identificar recursos grandes o bloqueantes, y verificar la implementación de precarga/precarga.
  • Panel Elements (Elementos) y la pestaña "Layout Shift":
    • En un nivel más visual, en el panel Elements, al inspeccionar el DOM, Chrome a veces resalta las áreas que han experimentado cambios de layout.
    • La pestaña "Layout Shift Regions" en la grabación de performance visualiza las áreas que se movieron durante un cambio de layout.

Lighthouse

Lighthouse es una herramienta de código abierto para auditar la calidad de páginas web. Puede ejecutarla en Chrome DevTools, como extensión de Chrome, o mediante línea de comandos (NPM).

  • Auditorías: Realiza auditorías en rendimiento, accesibilidad, mejores prácticas, SEO y PWA (Progressive Web App).
  • Métricas: Reporta LCP, FCP, Speed Index, TBT, CLS (estas últimas en versiones previas de Lighthouse todavía reportan FID). También incluye métricas secundarias como Total Blocking Time y Time to Interactive.
  • Sugerencias: Ofrece una lista priorizada de sugerencias de optimización para cada métrica, con enlaces a documentación de web.dev.
  • Uso: Ideal para pruebas de regresión, integración continua (CI/CD) y debugging en desarrollo. Es una herramienta de "lab data".

PageSpeed Insights (PSI)

PSI es una herramienta en línea de Google que combina datos de campo (CrUX) y datos de laboratorio (Lighthouse) para una URL específica.

  • Datos de Campo: Muestra los Core Web Vitals reales (LCP, INP, CLS) para la página durante los últimos 28 días, siempre que haya suficientes datos en CrUX. Esta es la fuente más importante para saber cómo Google ve su sitio.
  • Datos de Laboratorio: Ejecuta una auditoría de Lighthouse en tiempo real y muestra las métricas de rendimiento y sugerencias de optimización.
  • UX: Interfaz fácil de usar que presenta los resultados de manera clara para desktop y móvil.
  • Uso: Excelente para un chequeo rápido del estado general de una URL y para obtener la visión de Google de su sitio.

Google Search Console (GSC)

GSC proporciona informes agregados de rendimiento para todo su sitio, basándose en los datos de campo de CrUX.

  • Informe "Core Web Vitals": Muestra qué URLs de su sitio tienen un rendimiento "Bueno", "Mejorable" o "Pobre" en LCP, INP y CLS, tanto en móvil como en escritorio.
  • Identificación de Problemas: Ayuda a identificar patrones de problemas (ej. todas las páginas de producto tienen CLS alto) y agrupa URLs similares.
  • Validación: Permite validar correcciones y seguir el progreso a lo largo del tiempo.
  • Uso: Fundamental para un monitoreo a largo plazo y para identificar grandes grupos de URLs con problemas de CWV. Es una herramienta de "field data" a gran escala.

CrUX BigQuery

Para análisis avanzados, Google publica el conjunto de datos completo de CrUX en Google BigQuery. Esto permite a los desarrolladores y analistas realizar consultas SQL personalizadas sobre millones de sitios web.

  • Análisis Profundo: Permite segmentar datos por país, tipo de conexión, tipo de dispositivo, y comparar métricas a lo largo del tiempo.
  • Benchmarking: Útil para comparar el rendimiento de su sitio con el de la competencia o con promedios de la industria.
  • Coste: BigQuery tiene un nivel gratuito, pero las consultas grandes pueden incurrir en costes.
  • Uso: Para análisis de rendimiento a escala empresarial, investigación o cuando PageSpeed o GSC no ofrecen la granularidad necesaria.

Extensión Web Vitals para Chrome

Esta extensión de Chrome, desarrollada por el equipo de Google Chrome, proporciona una vista en tiempo real de los Core Web Vitals para la página actual.

  • En tiempo real: Muestra LCP, INP y CLS mientras navega por una página.
  • Visualización: Resalta los elementos que contribuyen al LCP y visualiza los cambios de layout que afectan al CLS.
  • Fácil de usar: Ideal para una inspección rápida durante el desarrollo o la navegación diaria.
  • Uso: Una herramienta de "lab data" conveniente y en tiempo real para el desarrollo y la depuración inicial.

Librería `web-vitals` NPM

Esta librería JavaScript oficial de Google permite recopilar los Core Web Vitals (y otras métricas) directamente en el lado del cliente (browser) para Real User Monitoring (RUM).

Instalación:

npm install web-vitals

Uso Básico (ejemplo para enviar a Google Analytics):

import { onLCP, onINP, onCLS } from 'web-vitals';

function sendToAnalytics(metric) {
  const body = JSON.stringify(metric);
  // Reemplazar con su URL de endpoint de Google Analytics o analytics propio
  if (navigator.sendBeacon) {
    navigator.sendBeacon('/analytics', body);
  } else {
    fetch('/analytics', { body, method: 'POST', keepalive: true });
  }
}

// Recopilar y enviar métricas de CWV al finalizar la carga y en cada interacción
onLCP(sendToAnalytics);
onINP(sendToAnalytics);
onCLS(sendToAnalytics);

// También pueden recopilarse otras métricas secundarias
// import { onFCP, onTTFB, onFID } from 'web-vitals';
// onFCP(sendToAnalytics);
// onTTFB(sendToAnalytics);
// onFID(sendToAnalytics); // FID es útil para datos históricos o comparar con INP

Ventajas:

  • Datos Reales: Captura cómo los usuarios reales experimentan su sitio, en su hardware y red.
  • Granularidad: Permite personalizar la recolección de datos y enviarlos a su propio sistema de análisis para una segmentación detallada (por usuario, por dispositivo, por ruta, etc.).
  • Control: Usted tiene el control total sobre los datos recopilados y cómo se almacenan y analizan.

Uso: Es la forma más fiable de construir su propio sistema de RUM, esencial para sitios grandes o con requisitos de análisis de rendimiento personalizados.

La combinación de estas herramientas (diagnóstico con DevTools/Lighthouse, monitoreo con PSI/GSC, RUM personalizado con web-vitals) proporciona una estrategia integral para medir, comprender y mejorar el rendimiento de los Core Web Vitals de su sitio.

Workflow de Optimización de Core Web Vitals

La optimización de los Core Web Vitals no es un evento único, sino un proceso continuo que debe integrarse en el ciclo de vida del desarrollo y mantenimiento del sitio. Un enfoque estructurado garantiza resultados sostenibles.

1. Auditoría Inicial y Diagnóstico

El primer paso es comprender el estado actual del rendimiento de su sitio.

  1. Recopilación de Datos de Campo (Field Data):
    • Google Search Console (GSC): Inicie aquí. Revise el informe de "Core Web Vitals" para identificar qué páginas o grupos de páginas tienen problemas (categorías "pobre" o "mejorable") en LCP, INP y CLS para móvil y escritorio. Esto le dará una visión general de dónde enfocar sus esfuerzos.
    • PageSpeed Insights (PSI): Para las URLs identificadas en GSC (o URLs representativas si GSC no tiene datos), ejecute PSI. Preste mucha atención a los datos de campo. PSI también mostrará métricas de laboratorio, pero el foco inicial debe estar en los datos de campo (CrUX).
    • RUM Personalizado (si está implementado): Si tiene la librería web-vitals enviando datos a su propio sistema de análisis, aproveche esta información para una visión más granular. Segmentar por navegador, dispositivo, conexión o país puede revelar problemas específicos.
  2. Análisis de Datos de Laboratorio (Lab Data) para Diagnóstico:
    • Lighthouse / Chrome DevTools: Una vez que haya identificado una URL problemática con datos de campo, utilice Lighthouse (en DevTools o a través de PSI) para una auditoría más profunda.
    • Panel "Performance" en DevTools: Este es clave. Grabe la carga de la página y las interacciones, analizando el flame chart.
      • LCP: Identifique el elemento LCP (DevTools lo indica). Analice la cascada de red para ver cuán tarde se descarga, si hay recursos bloqueantes, o si el TTFB es alto.
      • INP: Busque "long tasks" en el hilo principal (marcadas con un triángulo rojo si duran >50ms). Realice interacciones simuladas en el panel Performance con CPU y red simuladas. Rastree los listeners de eventos para ver qué scripts están acaparando el hilo principal.
      • CLS: Use la pestaña "Layout Shift Regions" en la grabación de rendimiento para ver visualmente qué elementos se movieron y cuándo. Inspeccione el DOM y el CSS para ver si las imágenes tienen dimensiones, si el contenido se inyecta dinámicamente sin espacio reservado.
    • Panel "Network": Busque scripts/stylesheets bloqueantes, tamaños de recursos excesivos, cascadas de carga inefficientes (ej: recursos críticos cargándose tarde).
  3. Benchmarking: Compare sus métricas con las de la competencia o promedios de la industria utilizando herramientas como el informe de CrUX o datos públicos.

2. Identificación de "Quick Wins"

Después del diagnóstico, hay que priorizar. Muchos problemas de CWV tienen soluciones relativamente sencillas que pueden generar un impacto significativo rápidamente.

Ejemplos de Quick Wins:

  • Imágenes:
    • Asegurarse de que todas las imágenes en el viewport (especialmente las del LCP) tengan atributos width y height explicitos.
    • Convertir imágenes a formatos modernos (WebP, AVIF) para reducir el tamaño de archivo.
    • Comprimir imágenes ya existentes.
    • Añadir loading="eager" y fetchpriority="high" a la imagen LCP.
  • CSS:
    • Minificar y comprimir CSS.
    • Identificar y eliminar CSS no utilizado.
    • Cargar CSS crítico en línea para el contenido "above the fold" y deferir el resto.
  • JavaScript:
    • Usar defer o async para scripts no críticos.
    • Minificar y comprimir JavaScript.
  • Fonts:
    • Usar font-display: swap; o optional (con precaución) para fuentes web.
    • Precargar fuentes críticas para evitar FOIT/FOUT.
  • Servidor/CDN:
    • Verificar si el caching del servidor está configurado correctamente.
    • Asegurarse de que un CDN esté sirviendo los activos estáticos y, si es posible, el HTML.

3. Desarrollo de un Roadmap Detallado

Una vez implementados los "quick wins", se necesita un plan a largo plazo para abordar los problemas más complejos o sistémicos.

  1. Priorización Basada en Impacto y Esfuerzo:
    • No todos los problemas son iguales. Priorice las optimizaciones que tendrán el mayor impacto en sus Core Web Vitals y en los objetivos de negocio, sopesando el esfuerzo de desarrollo.
    • Las mejoras en LCP y INP suelen tener el mayor impacto en la percepción del usuario.
  2. Tareas Estructuradas:
    • Optimización de Backend: Mejorar el TTFB (optimización de base de datos, lógica del servidor, hosting).
    • Optimización de JavaScript: Code splitting, lazy loading de componentes, web workers para tareas pesadas, optimización de hydration para SPAs.
    • Optimización de Recursos: Implementar <picture> con WebP/AVIF para todas las imágenes, gestión inteligente de fuentes web (subsetting, variable fonts).
    • Gestión de Terceros: Retrasar la carga de scripts de terceros, auditar su impacto, considerar alternativas auto-alojadas.
    • Estabilidad Visual Avanzada: Refactorizar CSS que pueda causar CLS, reservar espacio para todos los componentes dinámicos.
  3. Integración en el Ciclo de Desarrollo:
    • Haga que las métricas de rendimiento sean una parte de sus pipelines de CI/CD. Utilice Lighthouse CI para automatizar las auditorías y prevenir regresiones.
    • Eduque a su equipo de desarrollo sobre las mejores prácticas de rendimiento.

4. Monitoreo y Ajuste Continuos

La web cambia, los usuarios cambian, y su sitio evoluciona. Por lo tanto, el monitoreo es crucial.

  1. Monitoreo de Datos de Campo (Running RUM):
    • La implementación de RUM (con web-vitals o una solución comercial) le permitirá ver el impacto de sus cambios en tiempo real y detectar nuevas regresiones rápidamente, antes de que afecten a su clasificación en GSC.
    • Configurar alertas para cuando los umbrales de CWV se pasen.
  2. Revisión Regular de GSC:
    • Aunque los datos de CrUX tienen un retraso, GSC sigue siendo la herramienta definitiva para saber qué piensa Google de su sitio. Revise los informes semanal o mensualmente.
    • Utilice la función "Validar Corrección" en GSC una vez que haya implementado soluciones para que Google vuelva a arrastrar e indexar las páginas afectadas.
  3. Auditorías de Laboratorio Frecuentes:
    • Realice auditorías de Lighthouse regularmente, especialmente después de despliegues importantes o cambios significativos en el contenido/funcionalidad.
    • Automatice Lighthouse CI en sus flujos de trabajo de desarrollo para detectar regresiones antes de que lleguen a producción.
  4. Mantenerse Actualizado:
    • Google actualiza los Core Web Vitals periódicamente (ej. el cambio de FID a INP). Manténgase al tanto de las noticias y la documentación oficial de web.dev.
    • Las nuevas tecnologías (ej. atributos fetchpriority, APIs scheduler.yield o content-visibility) pueden ofrecer nuevas vías de optimización.

Este workflow asegura que su sitio no solo alcance los umbrales de Core Web Vitals, sino que los mantenga y esté preparado para futuras evoluciones, garantizando una excelente experiencia de usuario y un rendimiento SEO sólido.

Errores Comunes y Mitos sobre Core Web Vitals

A medida que los Core Web Vitals han ganado prominencia, también han surgido algunos malentendidos y mitos. Desmentirlos es crucial para una estrategia de optimización efectiva.

Mito 1: "Mi sitio es rápido, no necesito optimizar CWV"

Realidad: La "velocidad" es un concepto vago. Un desarrollador puede decir que un sitio es "rápido" porque carga en su máquina potente con fibra óptica. Los Core Web Vitals son un conjunto de métricas muy específicas y cuantificables que miden la percepción de la velocidad y la experiencia real del usuario, incluyendo estabilidad visual e interactividad.

  • Un sitio puede cargar visualmente rápido (buen FCP) pero tener un LCP deficiente si la imagen principal es enorme.
  • Puede parecer rápido pero ser inestable (CLS alto) o no responder a las interacciones (INP alto).

Lo que importa no es solo el tiempo total de carga, sino la secuencia de eventos, la estabilidad y la capacidad de respuesta. Las métricas CWV capturan estos matices.

Mito 2: "Los CWV son solo para SEO"

Realidad: Aunque los Core Web Vitals son un factor de clasificación de Google, su impacto se extiende mucho más allá del SEO puro. Están inherentemente ligados a la experiencia del usuario (UX) y, por lo tanto, a métricas de negocio críticas.

  • Tasas de Conversión: Como se mencionó anteriormente (Akamai, Deloitte), la mejora de estas métricas se correlaciona directamente con el aumento de las tasas de conversión, ventas y leads.
  • Retención de Usuarios y Engagement: Un sitio web que es rápido, estable y reactivo fomenta que los usuarios permanezcan más tiempo, exploren más páginas y regresen.
  • Imagen de Marca: Un sitio de alto rendimiento proyecta una imagen de profesionalismo y fiabilidad.
  • Costos Operativos: Un sitio más eficiente puede reducir el consumo de recursos del servidor, ahorrando dinero.

Pensar en los CWV solo como una "tarea de SEO" es perder la perspectiva de su valor estratégico global.

Mito 3: "Necesito un 100/100 en Lighthouse"

Realidad: Aspirar a una puntuación de 100 en Lighthouse es encomiable, pero no siempre es el objetivo más realista o rentable. Los scores de Lighthouse son de lab data y pueden no reflejar perfectamente los field data de sus usuarios reales.

  • Prioridad Field Data (CrUX): El verdadero objetivo es que sus Core Web Vitals basados en datos de campo (CrUX, lo que Google usa para clasificar) estén en el rango "Bueno" para el 75% de sus usuarios.
  • Rendimiento vs. Features: Lograr un 100 puede requerir compromisos significativos en funcionalidad o implementación de terceros que aportan valor al negocio. Es un equilibrio.
  • No es una carrera: Mejorar de un 40 a un 80 en Lighthouse suele ser relativamente fácil y tiene un impacto masivo. Pasar de 95 a 100 puede requerir un esfuerzo desproporcionado para un beneficio marginal.

Use Lighthouse como una herramienta de diagnóstico y como una guía, pero no como el fin último. La meta es superar los umbrales de "Bueno" en los datos de campo.

Error 1: Fijarse solo en Lab Data (Lighthouse, DevTools)

Realidad: Es un error común. La gente ejecuta Lighthouse y se obsesiona con el score o las sugerencias locales. Sin embargo, los datos de laboratorio son un entorno controlado y artificial. Pueden no reflejar la multiplicidad de dispositivos, condiciones de red, uso de extensiones de navegador y factores del mundo real que experimentan sus usuarios.

  • Los datos de campo (CrUX, RUM) son la fuente de la verdad para Google. Son los que afectan su SEO directamente.
  • Utilice los datos de laboratorio para depurar y validar cambios durante el desarrollo, pero siempre compruebe su impacto en los datos de campo.

Error 2: Ignorar el Contexto del Usuario

Realidad: Cada usuario es diferente. Tienen distintos dispositivos (gama baja a alta), redes (2G a fibra óptica), ubicaciones geográficas y comportamientos.

  • Percentil 75: Recordar que Google usa el percentil 75 significa que debe optimizar para la mayoría de sus usuarios, no solo para los que tienen conexiones rápidas.
  • Dispositivos Móviles: La mayoría del tráfico web proviene de dispositivos móviles. La optimización para móvil es primordial, y esto a menudo significa optimizar para dispositivos de gama media-baja.
  • Herramientas de RUM: Invertir en su propio Real User Monitoring le permitirá segmentar su rendimiento por estos factores (tipo de dispositivo, país, ISP, etc.) y priorizar las optimizaciones que ayuden a la mayor cantidad de usuarios, especialmente a los que tienen peores condiciones.

Una estrategia integral de Core Web Vitals requiere una comprensión profunda de estas realidades y un enfoque equilibrado entre los datos de laboratorio y de campo, siempre con una mentalidad centrada en el usuario real.

Caso de Estudio 1604lab: Tiendas Hyvä Magento 2 y Core Web Vitals

En 1604lab, la optimización del rendimiento y la consecución de Core Web Vitals "en verde" no es solo una recomendación, es una parte fundamental de nuestra filosofía de desarrollo, especialmente en proyectos de comercio electrónico de alto rendimiento con Magento 2.

Un claro ejemplo de nuestro éxito es nuestra experiencia con el frontend Hyvä Themes para Magento 2. Hyvä es una alternativa ligera y orientada al rendimiento que reemplaza la complejidad del frontend Luma de Magento por defecto, notablemente pesado en JavaScript.

Hemos tenido la oportunidad de implementar Hyvä en tres tiendas Magento 2 de clientes con excelentes resultados en Core Web Vitals. En estos proyectos, no solo hemos logrado que las métricas LCP, INP y CLS estén consistentemente en el rango "Bueno", sino que hemos observado un impacto directo positivo en la experiencia del usuario y, por extensión, en los indicadores de negocio de nuestros clientes.

Desafíos típicos de Magento 2 y cómo Hyvä los aborda:

  • LCP: El Luma original de Magento es conocido por su JavaScript y CSS masivos que bloquean el renderizado, elevando el LCP. Hyvä, al ser minimalista, permite una carga mucho más rápida del contenido principal.
    • En nuestros proyectos, hemos optimizado aún más las imágenes LCP (formatos WebP/AVIF, atributos de dimensión explícitos, fetchpriority="high") y asegurado un TTFB bajo a través de configuraciones de servidor robustas y caching avanzado (Varnish, Redis).
  • INP: La interactividad es un punto débil de muchos sitios Magento por el exceso de JS que bloquea el hilo principal. Hyvä reduce drásticamente la cantidad de JavaScript inicial, lo que se traduce en un TBT y INP significativamente menores.
    • Nuestra implementación se centra en asegurar que los pocos scripts JS restantes sean asíncronos o diferidos, y que las interacciones críticas (añadir al carrito, filtros) sean instantáneas gracias a un código menos intrusivo y optimizado.
  • CLS: Saltos de layout son comunes en Magento debido a la inyección dinámica de elementos por plugins de terceros o publicidad. Hyvä, con su enfoque "mobile-first" y un diseño más controlado, facilita la predicción y reserva de espacio.
    • En 1604lab, nos enfocamos en implementar dimensiones explícitas para todas las imágenes, reservar espacio para los componentes dinámicos y gestionar cuidadosamente la carga de fuentes y widgets de terceros para evitar cualquier CLS inesperado.

Resultados Concretos:

Gracias a la combinación de unos cimientos sólidos que ofrece Hyvä y una meticulosa estrategia de optimización de Core Web Vitals por parte de nuestro equipo, hemos logrado:

  • Verificar consistentemente los tres Core Web Vitals (LCP, INP, CLS) en verde en Google Search Console para las páginas principales (categorías, producto, homepage) de estas tres tiendas.
  • Puntuaciones de Lighthouse superiores a 90 o incluso 95 en la mayoría de las páginas auditadas.
  • Mejoras tangibles en las tasas de rebote y el tiempo de permanencia en el sitio, indicando una mejor experiencia del usuario.
  • Un feedback positivo general de los clientes respecto a la fluidez y rapidez de sus nuevas tiendas.

Este caso de estudio subraya que con la tecnología adecuada y la experiencia de un equipo especializado, es posible no solo cumplir, sino sobresalir en los estrictos requisitos de rendimiento de Google, transformando la experiencia del usuario y potenciando el éxito online.

Para más detalles sobre cómo abordamos la optimización de rendimiento en Magento 2 con Hyvä, puede visitar nuestra entrada de blog sobre el tema: Hyvä Magento 2: Frontend enfocado al rendimiento – Casos de estudio 1604lab.

Preguntas Frecuentes (FAQ)

¿Qué diferencia a los Core Web Vitals de otras métricas de rendimiento?

Los Core Web Vitals son un subconjunto específico y seleccionado de métricas de rendimiento que Google considera "críticas" para la experiencia de usuario. A diferencia de otras métricas más técnicas (como First Contentful Paint, Time To First Byte, Speed Index o Total Blocking Time), los CWV están diseñados para ser entendidos como indicadores del impacto directo en el usuario: LCP (velocidad de carga percibida), INP (interactividad) y CLS (estabilidad visual). Aunque las métricas secundarias son importantes para el diagnóstico, los CWV son las que Google utiliza directamente como señal de clasificación y prioriza su visibilidad en herramientas como Search Console.

¿Cuánto tiempo tardaré en ver los resultados de la optimización?

Esto depende de varios factores. Los cambios en Lighthouse (datos de laboratorio) suelen ser visibles inmediatamente después de la implementación y el relanzamiento. Sin embargo, para ver el impacto en los datos de campo de CrUX (los que usa Google para el ranking), normalmente se necesita esperar un período de 28 días. Google recopila estos datos de forma continua y los reporta agregados mensualmente. Una vez que sus puntuaciones de Core Web Vitals en Google Search Console mejoren, Google puede tardar algunas semanas en reevaluar su sitio y potencialmente ajustar su ranking.

¿Mi sitio pequeño o personal necesita preocuparse por los Core Web Vitals?

Sí, absolutamente. Aunque el impacto en el SEO pueda ser percibido como menor para sitios con poco tráfico o sin fines comerciales directos, los Core Web Vitals afectan directamente a la experiencia de todos los usuarios. Un sitio pequeño que se carga rápidamente y es agradable de usar tendrá una mayor retención de visitantes y una mejor tasa de satisfacción. Y si en el futuro el sitio crece o Google ajusta aún más la importancia de CWV, ya estará preparado. Es una buena práctica web universal.

¿Todos los Core Web Vitals importan igual para el SEO?

Google ha indicado que LCP, INP y CLS son los tres factores principales de la señal de Page Experience. No se ha especificado si uno tiene más peso que otro. La recomendación es optimizar las tres métricas por igual para asegurar que todas estén en el rango "Bueno" para al menos el 75% de las visitas. Un mal rendimiento en cualquiera de ellas puede afectar negativamente la clasificación, incluso si las otras dos son excelentes. El objetivo es ofrecer una experiencia holística y equilibrada.

¿Cómo influye el rendimiento del servidor en los Core Web Vitals?

El rendimiento del servidor es un factor fundamental, especialmente para LCP e INP. Un servidor lento impacta directamente en el Time To First Byte (TTFB), que es el tiempo que tarda su servidor en enviar el primer byte del documento HTML. Un TTFB alto retrasa el inicio de toda la carga de la página, afectando directamente al LCP. Además, la capacidad del servidor para servir rápidamente los activos (imágenes, CSS, JS) también influye en todas las métricas. Un backend proactivo, bases de datos optimizadas y un buen sistema de caching son cruciales.

¿Puedo ignorar uno de los Core Web Vitals si los otros son buenos?

No es recomendable. Google evalúa los Core Web Vitals como un conjunto para la señal de Page Experience. Si uno de ellos está en el rango "Pobre" o "Mejorable", su sitio no obtendrá el "pase" completo de Page Experience, incluso si los otros dos son excelentes. Además, cada métrica representa un aspecto vital de la experiencia del usuario: si un sitio es rápido y estable visualmente, pero responde mal a las interacciones, la experiencia general seguirá siendo deficiente. Es un equilibrio, y las tres métricas son interdependientes en la percepción general del usuario.

Fuentes Oficiales

¿Necesitas mejorar los Core Web Vitals de tu sitio web y potenciar tu SEO y experiencia de usuario? En 1604lab somos expertos en optimización de rendimiento web. Contáctanos hoy mismo para una auditoría y estrategia personalizada o explora nuestros servicios de desarrollo frontend con Hyvä Themes para Magento 2.