Extraer CSS crítico

Aprende a mejorar los tiempos de renderización con la técnica de CSS crítica.

El navegador debe descargar y analizar los archivos CSS para poder mostrar la página, lo que hace que el CSS sea un recurso que bloquea la renderización. Si los archivos CSS son grandes o las condiciones de la red son deficientes, las solicitudes de archivos CSS pueden aumentar significativamente el tiempo que tarda una página web en renderizarse.

Ilustración de una laptop y un dispositivo móvil con páginas web que desbordan los bordes de las pantallas

Incorporar los estilos extraídos en el <head> del documento HTML elimina la necesidad de realizar una solicitud adicional para recuperar estos estilos. El resto del CSS se puede cargar de forma asíncrona.

Archivo HTML con CSS importante intercalado en el encabezado
CSS crítico intercalado

Mejorar los tiempos de renderización puede marcar una gran diferencia en el rendimiento percibido, en especial en condiciones de red deficientes. En las redes móviles, la latencia alta es un problema independientemente del ancho de banda.

Comparación de la vista de tira de película de la carga de una página con CSS que bloquea la renderización (arriba) y la misma página con CSS crítico intercalado (abajo) en una conexión 3G. La tira de película superior muestra seis fotogramas en blanco antes de mostrar el contenido. La tira de película inferior muestra contenido significativo en el primer fotograma.
Comparación de la carga de una página con CSS que bloquea la renderización (arriba) y la misma página con CSS crítico intercalado (abajo) en una conexión 3G

Si tienes un First Contentful Paint (FCP) bajo y ves la oportunidad "Eliminar el recurso que bloquea la renderización" en las auditorías de Lighthouse, te recomendamos que pruebes el CSS crítico.

Auditoría de Lighthouse con oportunidades de &quot;Eliminar recursos que bloquean la renderización&quot; o &quot;Aplazar el CSS no utilizado&quot;

Para minimizar la cantidad de ida y vuelta para la primera renderización, intenta mantener el contenido de la mitad superior por debajo de 14 KB (comprimido).

El impacto en el rendimiento que puedes lograr con esta técnica depende del tipo de sitio web que tengas. En términos generales, cuanto más CSS tenga un sitio, mayor será el impacto posible del CSS intercalado.

Descripción general de las herramientas

Existen varias herramientas excelentes que pueden determinar automáticamente el CSS fundamental de una página. Esta es una buena noticia, ya que hacerlo de forma manual sería un proceso tedioso. Requiere el análisis de todo el DOM para determinar los estilos que se aplican a cada elemento del viewport.

Crítico

Crítico extrae, reduce y intercala el CSS de la mitad superior de la página, y está disponible como módulo npm. Se puede usar con Gulp (directamente) o con Grunt (como plugin). También hay un complemento de Webpack.

Es una herramienta simple que quita mucho pensamiento del proceso. Ni siquiera tienes que especificar los diseños de página, ya que Critical los detecta automáticamente. También admite la extracción de CSS críticos para varias resoluciones de pantalla.

criticalCSS

CriticalCSS es otro módulo de npm que extrae CSS de la mitad superior de la página. También está disponible como CLI.

No tiene opciones para intercalar y reducir el CSS crítico, pero te permite incluir de forma forzosa reglas que en realidad no pertenecen al CSS crítico y te brinda un control más detallado para incluir declaraciones @font-face.

Penthouse

Penthouse es una buena opción si tu sitio o aplicación tiene una gran cantidad de estilos o estilos que se inyectan de forma dinámica en el DOM (común en apps de Angular). Usa Puppeteer de forma interna y también incluye una versión alojada en línea.

Penthouse no detecta automáticamente los diseños de página, por lo que debes especificar los archivos HTML y CSS para los que deseas generar CSS esenciales. La ventaja es que es bueno para ejecutar muchos trabajos en paralelo.