{"id":44161,"date":"2021-10-04T11:47:51","date_gmt":"2021-10-04T09:47:51","guid":{"rendered":"https:\/\/kinsta.com\/?p=102244"},"modified":"2023-08-23T11:10:09","modified_gmt":"2023-08-23T09:10:09","slug":"optimizar-css","status":"publish","type":"post","link":"https:\/\/kinsta.com\/es\/blog\/optimizar-css\/","title":{"rendered":"C\u00f3mo Optimizar el CSS para Sacar el M\u00e1ximo Rendimiento del Sitio"},"content":{"rendered":"<p>Incluso en 2021, el rendimiento de la web sigue siendo un problema. Seg\u00fan HTTP Archive, la p\u00e1gina media requiere una <a href=\"https:\/\/httparchive.org\/reports\/page-weight?start=latest\">descarga de 2 MB<\/a>, realiza m\u00e1s de 60 peticiones HTTP y puede tardar <a href=\"https:\/\/httparchive.org\/reports\/loading-speed?start=latest\">18 segundos<\/a> en cargarse completamente en un dispositivo m\u00f3vil. Las hojas de estilo suponen 60 kB repartidos en siete peticiones, por lo que no suelen ser una prioridad cuando se intenta solucionar los problemas de rendimiento.<\/p>\n<p>Sin embargo, el CSS s\u00ed tiene un efecto, por m\u00ednimo que parezca. Una vez que hayas abordado tu <a href=\"https:\/\/kinsta.com\/es\/blog\/que-es-javascript\/\">JavaScript<\/a>, aprender a optimizar el CSS correctamente deber\u00eda ser la siguiente prioridad.<\/p>\n<p>\u00a1Vamos a sumergirnos en el tema!<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>C\u00f3mo afecta el CSS al rendimiento de la p\u00e1gina<\/h2>\n<p>El CSS parece inocente, pero puede requerir un procesamiento pesado.<\/p>\n<h3>El CSS bloquea el renderizado<\/h3>\n<p>Cuando tu navegador encuentra una etiqueta <code>&lt;link&gt;<\/code>, detiene otras descargas y procesamientos del navegador mientras obtiene y analiza el archivo CSS.<\/p>\n<p><span style=\"font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;font-size: 1rem\">JavaScript tambi\u00e9n puede <a href=\"https:\/\/kinsta.com\/es\/blog\/eliminar-bloqueadores-de-visualizacion\/\">bloquear el renderizado del navegador<\/a>, pero el procesamiento as\u00edncrono es posible con:<\/span><\/p>\n<ol>\n<li>El atributo <code>async<\/code> para descargar scripts en paralelo, que se ejecutan inmediatamente cuando est\u00e1n listos.<\/li>\n<li>El atributo <code>defer<\/code> para descargar en paralelo, y luego ejecutar en orden cuando el DOM est\u00e1 listo.<\/li>\n<li>El atributo <code>type=\"module\"<\/code> para cargar un m\u00f3dulo ES (que se comporta como <code>defer<\/code>).<\/li>\n<\/ol>\n<p>Los activos como las im\u00e1genes suelen requerir m\u00e1s ancho de banda, pero <a href=\"https:\/\/kinsta.com\/es\/blog\/webp\/\">existen formatos eficientes<\/a> y pueden <a href=\"https:\/\/kinsta.com\/es\/blog\/lazy-load-de-wordpress\/\">cargarse de forma diferida<\/a> (atributo <code>loading=\"lazy\"<\/code>) sin bloquear la renderizaci\u00f3n del navegador.<\/p>\n<p>Nada de esto es posible con CSS. El archivo se almacena en la cach\u00e9, por lo que las siguientes cargas de la p\u00e1gina <em>deber\u00edan <\/em>ser m\u00e1s r\u00e1pidas, pero el proceso de bloqueo de la renderizaci\u00f3n permanece.<\/p>\n\n<h3>Los archivos CSS grandes tardan en procesarse<\/h3>\n<p>Cuanto m\u00e1s grande sea tu hoja de estilos, m\u00e1s tiempo tardar\u00e1 en descargarse y procesarse en un modelo de objetos CSS (CSSOM), que el navegador y las API de JavaScript pueden utilizar para mostrar la p\u00e1gina. Aunque las hojas de estilo CSS son m\u00e1s peque\u00f1as que la mayor\u00eda de los archivos de un sitio web, no son inmunes a la regla de \u00abm\u00e1s peque\u00f1o es mejor\u00bb.<\/p>\n<h3>Los archivos CSS crecen<\/h3>\n<p>Puede ser dif\u00edcil identificar los estilos que ya no se utilizan, y eliminar los equivocados puede causar estragos en un sitio. Los desarrolladores suelen optar por el enfoque m\u00e1s seguro de \u00abconservar todo\u00bb. Los <a href=\"https:\/\/kinsta.com\/es\/blog\/el-paquete-no-se-ha-podido-descomprimir\/\">estilos de p\u00e1gina<\/a>, los <a href=\"https:\/\/kinsta.com\/es\/blog\/componentes-web\/\">componentes<\/a> y los widgets que ya no se utilizan siguen existiendo en CSS. \u00bfEl resultado? El tama\u00f1o del archivo, la complejidad y el esfuerzo de mantenimiento aumentan exponencialmente, haciendo que los desarrolladores sean cada vez menos propensos a eliminar el c\u00f3digo redundante.<\/p>\n<h3>Las hojas de estilo pueden hacer referencia a otros activos<\/h3>\n<p>El CSS puede hacer referencia a otras hojas de estilo utilizando reglas @import. Estas importaciones bloquean el procesamiento de la hoja de estilo actual y cargan otros archivos CSS <strong>en serie<\/strong>.<\/p>\n<p>Tambi\u00e9n se pueden referenciar otros activos, como fuentes e im\u00e1genes. El navegador intentar\u00e1 optimizar las descargas, pero en caso de duda, las obtendr\u00e1 inmediatamente. Los archivos codificados en base64 que se encuentran dentro de la p\u00e1gina a\u00fan requieren un mayor procesamiento.<\/p>\n<h3>Renderizaci\u00f3n de efectos CSS<\/h3>\n<p>Los navegadores tienen tres <a href=\"https:\/\/kinsta.com\/es\/blog\/ruta-de-visualizacion-critica\/\">fases de representaci\u00f3n<\/a>:<\/p>\n<ol>\n<li>La fase de <strong>maquetaci\u00f3n <\/strong>(o <strong>reflujo<\/strong>) calcula las dimensiones de cada elemento y c\u00f3mo afecta al tama\u00f1o o posicionamiento de los elementos que lo rodean.<\/li>\n<li>La fase de <strong>pintura <\/strong>dibuja las partes visuales de cada elemento en capas separadas: texto, colores, im\u00e1genes, bordes, sombras, etc.<\/li>\n<li>El <strong>compuesto <\/strong>dibuja cada capa en la p\u00e1gina en el orden correcto seg\u00fan los contextos de apilamiento, posicionamiento, \u00edndices z, etc.<\/li>\n<\/ol>\n<p>Si no tienes cuidado, los cambios de propiedades CSS y las animaciones pueden hacer que las tres fases se vuelvan a renderizar. Algunas propiedades, como las sombras y los degradados, tambi\u00e9n son computacionalmente m\u00e1s caras que los colores de los bloques y los m\u00e1rgenes.<\/p>\n<h2>Herramientas de an\u00e1lisis del rendimiento de CSS<\/h2>\n<p>Admitir que tienes un problema de rendimiento de CSS es el primer paso en el camino de la recuperaci\u00f3n. Encontrar y solucionar las causas es otra cuesti\u00f3n.<\/p>\n<p>Las siguientes herramientas y servicios (no clasificados en ning\u00fan orden) pueden ayudarte a identificar los cuellos de botella en tu c\u00f3digo.<\/p>\n<h3>1. DevTools Network Panel<\/h3>\n<p>Los especialistas en rendimiento web pasan mucho tiempo en <a href=\"https:\/\/kinsta.com\/es\/blog\/inspeccion-elementos\/\">DevTools<\/a> y en el panel de <strong>Network <\/strong>en particular. DevTools es nativo en <a href=\"https:\/\/kinsta.com\/es\/cuota-mercado-mundial-navegadores\/\">la mayor\u00eda de los navegadores modernos<\/a>, aunque en nuestros ejemplos utilizaremos Google Chrome.<\/p>\n<p>DevTools puede abrirse desde el men\u00fa del navegador, normalmente en <strong>M\u00e1s herramientas <\/strong>&gt; <strong>Herramientas de desarrollo<\/strong>, o mediante los atajos de teclado <strong>Ctrl | Cmd + Shift + I <\/strong>o <strong>F12<\/strong>.<\/p>\n<p>Cambia a la pesta\u00f1a <strong>Network <\/strong>y aseg\u00farate de que la opci\u00f3n <strong>Desactivar la cach\u00e9 <\/strong>est\u00e1 marcada para evitar que los archivos en cach\u00e9 afecten al informe. Tambi\u00e9n puedes cambiar la opci\u00f3n de throttling para simular redes m\u00f3viles m\u00e1s lentas.<\/p>\n<p>Actualiza la p\u00e1gina para ver el gr\u00e1fico de cascada de descarga y procesamiento:<\/p>\n<figure id=\"attachment_102250\" aria-describedby=\"caption-attachment-102250\" style=\"width: 781px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/network-waterfall.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-102250 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/network-waterfall.png\" alt=\"Panel de DevTools Network.\" width=\"781\" height=\"635\"><\/a><figcaption id=\"caption-attachment-102250\" class=\"wp-caption-text\">Panel de DevTools Network.<\/figcaption><\/figure>\n<p>Cualquier barra larga es motivo de preocupaci\u00f3n, pero debes tener especial cuidado con las barras largas bloqueadas\/estancadas (mostradas en blanco). En este ejemplo, la fila resaltada y todas las filas siguientes no pudieron comenzar a descargarse hasta que se procesaron los archivos CSS y JavaScript que bloquean la representaci\u00f3n en la parte superior de la p\u00e1gina HTML.<\/p>\n<p>El cuadro de <strong>filtrado le permite <\/strong>mostrar u ocultar activos espec\u00edficos:<\/p>\n<ul>\n<li><code>larger-than<em>:&lt;S&gt;<\/em><\/code> : Limita los archivos mayores que <em>&lt;S&gt; <\/em>, expresados en bytes (10.000), Kilobytes (1.000 kB) o megabytes (1 M)<\/li>\n<li><code>-larger-than:&lt;S&gt;<\/code> : Limita a los archivos m\u00e1s peque\u00f1os que <em>&lt;S&gt;<\/em><\/li>\n<li><code>-domain:*&lt;.yourdomain.com&gt;<\/code> : Muestra las peticiones de terceros que no se cargan desde tu dominio principal. Estos juegan un factor importante que contribuye a la lentitud de los sitios.<\/li>\n<\/ul>\n<p>Una p\u00e1gina de alto rendimiento con CSS optimizado suele tener menos activos cargados en paralelo con barras cortas bloqueadas\/estancadas.<\/p>\n<h3>2. WebPageTest<\/h3>\n<p><a href=\"https:\/\/www.webpagetest.org\/\">WebPageTest<\/a> ofrece una vista de cascada de red similar, as\u00ed como muchos otros gr\u00e1ficos de rendimiento:<\/p>\n<figure id=\"attachment_102254\" aria-describedby=\"caption-attachment-102254\" style=\"width: 1023px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/webpagetest.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-102254 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/webpagetest.png\" alt=\"Cascada de activos de WebPageTest.org.\" width=\"1023\" height=\"667\"><\/a><figcaption id=\"caption-attachment-102254\" class=\"wp-caption-text\">Cascada de activos de WebPageTest.org.<\/figcaption><\/figure>\n<p>El servicio utiliza dispositivos ubicados en diferentes lugares del mundo para poder evaluar el rendimiento en el mundo real y las optimizaciones de CSS.<\/p>\n<h3>3. Panel Lighthouse de Chrome DevTools<\/h3>\n<p>El panel DevTools <strong>Lighthouse <\/strong>se ofrece en navegadores basados en Chromium como Chrome, Edge, Brave, Opera y Vivaldi. Puede generar informes de rendimiento, de aplicaciones web progresivas, de mejores pr\u00e1cticas, de accesibilidad y de <a href=\"https:\/\/kinsta.com\/es\/blog\/wordpress-seo\/\">optimizaci\u00f3n de motores de b\u00fasqueda<\/a> para dispositivos m\u00f3viles y de escritorio.<\/p>\n<figure id=\"attachment_102249\" aria-describedby=\"caption-attachment-102249\" style=\"width: 738px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/lighthouse-performance.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-102249 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/lighthouse-performance.png\" alt=\"Panel DevTools Lighthouse.\" width=\"738\" height=\"787\"><\/a><figcaption id=\"caption-attachment-102249\" class=\"wp-caption-text\">Panel DevTools Lighthouse.<\/figcaption><\/figure>\n<p>La herramienta hace sugerencias de mejora, incluyendo formas de optimizar el CSS. Puede que no todas sean pr\u00e1cticas o posibles, pero se destacan las m\u00e1s beneficiosas.<\/p>\n<h3>4. Google PageSpeed Insights<\/h3>\n<p><a href=\"https:\/\/kinsta.com\/es\/blog\/google-pagespeed-insights\/\">PageSpeed Insights<\/a> es la versi\u00f3n online de Lighthouse. Tiene menos funciones, pero se puede utilizar en cualquier navegador y ofrece algunas perspectivas alternativas.<\/p>\n<p>Por ejemplo, un mapa de \u00e1rbol muestra los mayores activos de JavaScript con una m\u00e9trica de cobertura, que indica qu\u00e9 proporci\u00f3n de c\u00f3digo se utiliza y no se utiliza:<\/p>\n<figure id=\"attachment_102251\" aria-describedby=\"caption-attachment-102251\" style=\"width: 1254px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/pagespeed-treemap.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-102251 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/pagespeed-treemap.png\" alt=\"Mapa de la p\u00e1gina de Google PageSpeed Insights.\" width=\"1254\" height=\"967\"><\/a><figcaption id=\"caption-attachment-102251\" class=\"wp-caption-text\">Mapa de la p\u00e1gina de Google PageSpeed Insights.<\/figcaption><\/figure>\n<p>El CSS no se muestra, pero la cantidad de JavaScript influir\u00e1 en la eficacia de los estilos.<\/p>\n<p>Otras herramientas similares <a href=\"https:\/\/kinsta.com\/es\/blog\/prueba-de-velocidad\/#website-speed-test-tools\">para comprobar la velocidad de los sitios web<\/a> son <a href=\"https:\/\/tools.pingdom.com\/\">Pingdom Website Speed Test<\/a> y <a href=\"https:\/\/kinsta.com\/es\/blog\/gtmetrix-herramienta-de-test-de-velocidad\/\">GTmetrix<\/a>.<\/p>\n<h3>5. Chrome DevTools Coverage Panel<\/h3>\n<p>El panel de <strong>cobertura<\/strong> de DevTools en los navegadores basados en Chromium ayuda a localizar el c\u00f3digo CSS (y JavaScript) no utilizado. Selecciona <strong>Coverage <\/strong>en el submen\u00fa DevTools <strong>More tools<\/strong>, luego actualiza tu p\u00e1gina y navega por tu sitio\/aplicaci\u00f3n:<\/p>\n<figure id=\"attachment_102248\" aria-describedby=\"caption-attachment-102248\" style=\"width: 752px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/coverage.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-102248 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/coverage.png\" alt=\"Panel de cobertura de DevTools.\" width=\"752\" height=\"793\"><\/a><figcaption id=\"caption-attachment-102248\" class=\"wp-caption-text\">Chrome DevTools Coverage Panel.<\/figcaption><\/figure>\n<p>Los activos CSS y JavaScript se muestran en el panel de <strong>Coverage<\/strong>, con la proporci\u00f3n de c\u00f3digo no utilizado en rojo. Haz clic en cualquier archivo para ver su c\u00f3digo fuente con el c\u00f3digo no utilizado resaltado en rojo en el medianil del n\u00famero de l\u00ednea.<\/p>\n<p>Hay que tener en cuenta algunas cosas:<\/p>\n<ul>\n<li>Las m\u00e9tricas de cobertura se restablecen si se actualiza o se navega a una nueva p\u00e1gina, como es t\u00edpico en un sitio de WordPress. La m\u00e9trica de c\u00f3digo no utilizado solo disminuir\u00e1 si est\u00e1s navegando por una aplicaci\u00f3n de una sola p\u00e1gina que carga el contenido sin actualizar la p\u00e1gina.<\/li>\n<li>La herramienta solo puede tener en cuenta el CSS utilizado hasta un momento determinado. No puede determinar si un widget no ha sido visualizado o tiene m\u00faltiples estados vinculados a JavaScript.<\/li>\n<\/ul>\n<h3>6. Monitor de rendimiento en tiempo real de Chrome DevTools<\/h3>\n<p>Los navegadores basados en Chromium tienen un monitor de rendimiento en tiempo real. De nuevo, est\u00e1 disponible en el men\u00fa DevTools <strong>More tools<\/strong>. Los gr\u00e1ficos se actualizan a medida que navegas por las p\u00e1ginas, te desplazas y activas las animaciones:<\/p>\n<figure id=\"attachment_102252\" aria-describedby=\"caption-attachment-102252\" style=\"width: 750px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/performance-monitor.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-102252 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/performance-monitor.png\" alt=\"DevTools Real-Time Performance Monitor.\" width=\"750\" height=\"312\"><\/a><figcaption id=\"caption-attachment-102252\" class=\"wp-caption-text\">DevTools Real-Time Performance Monitor.<\/figcaption><\/figure>\n<p>Las siguientes m\u00e9tricas son de especial inter\u00e9s para optimizar el rendimiento del CSS (cuanto m\u00e1s bajo, mejor):<\/p>\n<ul>\n<li><strong>Uso de la CPU: <\/strong>Utilizaci\u00f3n del procesador de 0% a 100%.<\/li>\n<li><strong>Layouts\/seg: <\/strong>La velocidad a la que el navegador tiene que volver a maquetar la p\u00e1gina.<\/li>\n<li><strong>Recalcular estilos\/seg: <\/strong>La velocidad a la que el navegador tiene que recalcular los estilos.<\/li>\n<\/ul>\n<p>Las otras m\u00e9tricas tambi\u00e9n pueden ser \u00fatiles si el CSS tiene problemas debido a factores externos (de nuevo, los valores m\u00e1s bajos indican un mejor rendimiento):<\/p>\n<ul>\n<li><strong>Tama\u00f1o de la pila de JS: <\/strong>La memoria total utilizada por los objetos de JavaScript.<\/li>\n<li><strong>Nodos DOM: <\/strong>El n\u00famero de elementos en el documento <a href=\"https:\/\/kinsta.com\/es\/blog\/mejores-practicas-html\/\">HTML<\/a>.<\/li>\n<li><strong>Escuchadores de eventos JS: <\/strong>El n\u00famero de oyentes de eventos JavaScript registrados.<\/li>\n<li><strong>Documentos: <\/strong>El n\u00famero de recursos, incluyendo la p\u00e1gina, los archivos CSS, los m\u00f3dulos JavaScript, etc.<\/li>\n<li><strong>Marcos del documento: <\/strong>El n\u00famero de marcos, iframes y scripts de trabajador de JavaScript.<\/li>\n<\/ul>\n<h3>7. DevTools Performance Report<\/h3>\n<p>El panel de <strong>performance <\/strong>de DevTools permite registrar las actividades de la p\u00e1gina para su posterior an\u00e1lisis y ayuda a identificar los problemas de rendimiento. Los informes generados son complejos y muchos desarrolladores los evitan, pero proporcionan informaci\u00f3n valiosa.<\/p>\n<p>El icono de configuraci\u00f3n del panel de Rendimiento te permite establecer varias opciones, como ralentizar la red y la CPU. Tambi\u00e9n puedes desactivar las muestras de JavaScript para que no se registren las pilas de llamadas detalladas.<\/p>\n<p>Para empezar, haz clic en el icono circular de <strong>registro<\/strong>, carga y\/o utiliza tu p\u00e1gina, y luego haz clic en el bot\u00f3n de <strong>stop <\/strong>para ver el informe:<\/p>\n<figure id=\"attachment_102253\" aria-describedby=\"caption-attachment-102253\" style=\"width: 673px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/performance-report.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-102253 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/performance-report.png\" alt=\"Informe de rendimiento de DevTools.\" width=\"673\" height=\"848\"><\/a><figcaption id=\"caption-attachment-102253\" class=\"wp-caption-text\">Informe de rendimiento de DevTools.<\/figcaption><\/figure>\n<p>Casi todas estas m\u00e9tricas ser\u00e1n de utilidad para los desarrolladores de JavaScript, pero los problemas de optimizaci\u00f3n de CSS pueden ser especialmente evidentes desde:<\/p>\n<ul>\n<li><strong>Barra roja superior: <\/strong>Indica que la velocidad de fotogramas ha disminuido significativamente, lo que puede estar causando problemas de rendimiento. Esto es esperado al inicio de la carga de una p\u00e1gina, pero el exceso de animaciones CSS tambi\u00e9n podr\u00eda ser un problema.<\/li>\n<li><strong>Cuadro resumen: <\/strong>Las m\u00e9tricas de carga, renderizado y pintado elevadas pueden indicar problemas de CSS.<\/li>\n<\/ul>\n<h2>Correcciones del rendimiento del CSS indirecto<\/h2>\n<p>Las siguientes correcciones no solucionar\u00e1n directamente los problemas de CSS, pero pueden ayudarte a solucionar algunos problemas de rendimiento con relativamente poco esfuerzo.<\/p>\n<h3>Utiliza un alojamiento bueno<\/h3>\n<p>Utilizar un buen alojamiento con servidores f\u00edsicamente m\u00e1s cercanos a sus usuarios aportar\u00e1 beneficios inmediatos en cuanto al rendimiento. Los planes de alojamiento var\u00edan, pero hay tres tipos principales:<\/p>\n<ol>\n<li><strong>Alojamiento compartido: <\/strong>Tu sitio web est\u00e1 alojado en un servidor f\u00edsico, posiblemente junto a otros cientos de sitios. El espacio en disco, la RAM, el tiempo de CPU y el ancho de banda se comparten. Los planes suelen ser econ\u00f3micos, pero el rendimiento y la disponibilidad se ven afectados por otros sitios. Es posible actualizarlo, pero su sitio permanecer\u00e1 generalmente en la misma infraestructura.<\/li>\n<li><strong>Alojamiento dedicado: <\/strong>Tu sitio se aloja en uno o varios servidores f\u00edsicos de tu propiedad. El hardware puede configurarse y actualizarse seg\u00fan las necesidades. Los planes suelen ser caros y los fallos de hardware siguen siendo problem\u00e1ticos.<\/li>\n<li><strong>Alojamiento en la nube: <\/strong><a href=\"https:\/\/kinsta.com\/es\/blog\/plataforma-en-la-nube-para-desarrolladores\/\">El alojamiento en la nube<\/a> abstrae la infraestructura de hardware en un conjunto de servicios a los que se puede acceder bajo demanda. Tu sitio podr\u00eda ser aprovisionado a trav\u00e9s de una gama de dispositivos para facilitar las actualizaciones.<\/li>\n<\/ol>\n<p><span style=\"font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;font-size: 1rem\">Los planes de alojamiento en la nube y los precios var\u00edan enormemente. Puedes considerar:<\/span><\/p>\n<ol>\n<li>Opciones de <a href=\"https:\/\/kinsta.com\/es\/blog\/que-es-paas\/\">plataforma como servicio (PaaS)<\/a>, como servidores web y bases de datos virtuales, o<\/li>\n<li>Opciones de <a href=\"https:\/\/kinsta.com\/es\/blog\/productos-saas\/\">software como servicio (SaaS)<\/a>, que ofrecen <a href=\"https:\/\/kinsta.com\/es\/\">aplicaciones totalmente gestionadas, como WordPress<\/a>.<\/li>\n<\/ol>\n<p>Cambiar de host puede aumentar el rendimiento. Es poco probable que resuelva todos tus problemas, pero es una soluci\u00f3n rentable para los problemas de backend y de ancho de banda.<\/p>\n<p>Tambi\u00e9n puedes considerar la posibilidad de utilizar una <a href=\"https:\/\/kinsta.com\/es\/blog\/wordpress-cdn\/\">red de distribuci\u00f3n de contenidos (CDN)<\/a> o una CDN especializada en im\u00e1genes y v\u00eddeos que pueda distribuir la carga entre varias ubicaciones geogr\u00e1ficamente m\u00e1s cercanas a los usuarios.<\/p>\n<h3><strong>Aprovecha las funciones de eficiencia del navegador y del servidor<\/strong><\/h3>\n<p>Alrededor del 10% de los sitios no activan la compresi\u00f3n gzip (o mejor), que suele ser la opci\u00f3n por defecto del servidor. Esto reduce el tama\u00f1o del CSS en un 60% o m\u00e1s al comprimir los archivos antes de su transmisi\u00f3n. No arreglar\u00e1 el CSS ineficiente, \u00a1pero el c\u00f3digo llegar\u00e1 antes!<\/p>\n<p>Tambi\u00e9n deber\u00edas <a href=\"https:\/\/kinsta.com\/es\/aprender\/que-es-http2\/\">activar HTTP\/2<\/a> (o mejor), que env\u00eda datos en un formato binario m\u00e1s peque\u00f1o, comprime las cabeceras y puede enviar m\u00e1s de un archivo en la misma conexi\u00f3n TCP.<\/p>\n<p>Por \u00faltimo, aseg\u00farate de que el navegador puede almacenar en cach\u00e9 el CSS y otros archivos de forma eficaz. Esto suele ser cuesti\u00f3n de establecer los hashtags <a href=\"https:\/\/www.w3.org\/Protocols\/rfc2616\/rfc2616-sec14.html#sec14.21\">Expires<\/a>, <a href=\"https:\/\/www.w3.org\/Protocols\/rfc2616\/rfc2616-sec14.html#sec14.29\">Last-Modified<\/a> y\/o <a href=\"https:\/\/en.wikipedia.org\/wiki\/HTTP_ETag\">ETag<\/a> en la cabecera HTTP.<\/p>\n<h3>Optimiza tu CMS<\/h3>\n<p><a href=\"https:\/\/kinsta.com\/es\/blog\/software-cms\/\">Los sistemas de gesti\u00f3n de contenidos<\/a> como WordPress pueden ampliarse con temas y plugins que sirven su propio CSS. En la medida de lo posible, deber\u00eda <a href=\"https:\/\/kinsta.com\/es\/ebooks\/wordpress\/acelerar-sitio-wordpress\/\">acelerar su CMS<\/a> para:<\/p>\n<ol>\n<li>Eliminar los plugins que no se utilizan.<\/li>\n<li>Utilizar temas m\u00e1s sencillos<\/li>\n<li>Habilitar el <a href=\"https:\/\/kinsta.com\/es\/blog\/que-es-la-cache\/\">almacenamiento en cach\u00e9<\/a> para evitar la regeneraci\u00f3n excesiva de las p\u00e1ginas.<\/li>\n<\/ol>\n<h3>Optimiza tus im\u00e1genes<\/h3>\n<p>Las im\u00e1genes no tienen la misma sobrecarga de procesamiento y renderizaci\u00f3n que el HTML, CSS y JavaScript, pero representan una gran proporci\u00f3n del peso de la p\u00e1gina y del ancho de banda utilizable. Considera lo siguiente:<\/p>\n<ol>\n<li>Eliminaci\u00f3n de im\u00e1genes innecesarias.<\/li>\n<li>Cambiar el tama\u00f1o de las im\u00e1genes grandes &#8211; quiz\u00e1s a no m\u00e1s del 150% del tama\u00f1o m\u00e1ximo que pueden aparecer en pantalla.<\/li>\n<li>Utilizar un <a href=\"https:\/\/kinsta.com\/es\/blog\/tipos-de-archivos-de-imagen\/\">formato de imagen adecuado<\/a>, idealmente una opci\u00f3n altamente comprimida como <a href=\"https:\/\/kinsta.com\/es\/blog\/webp\/\">WebP<\/a> o AVIF, pero posiblemente <a href=\"https:\/\/kinsta.com\/es\/blog\/wordpress-svg\/\">SVG<\/a> para logotipos y gr\u00e1ficos.<\/li>\n<li>Sustituci\u00f3n de im\u00e1genes con gradientes CSS u otros efectos.<\/li>\n<li>A\u00f1adir atributos de anchura y altura a las etiquetas HTML <code>&lt;img&gt;<\/code> o utilizar la nueva <a href=\"https:\/\/developer.mozilla.org\/docs\/Web\/CSS\/aspect-ratio\">propiedad CSS aspect-ratio<\/a> para garantizar que se reserve el espacio adecuado en la p\u00e1gina antes de que se descargue la imagen.<\/li>\n<\/ol>\n<p>Una CDN de im\u00e1genes especializada puede encargarse de parte de este trabajo. Para m\u00e1s consejos, consulta nuestra gu\u00eda sobre c\u00f3mo <a href=\"https:\/\/kinsta.com\/es\/blog\/optimizar-imagenes-para-la-web\/\">optimizar las im\u00e1genes para la web<\/a>.<\/p>\n<h3>Eliminar el CSS no utilizado<\/h3>\n<p>Los estilos m\u00e1s r\u00e1pidos son los que nunca necesitas cargar o renderizar. Intenta <a href=\"https:\/\/kinsta.com\/es\/blog\/css-wordpress\/\">eliminar\/editar cualquier c\u00f3digo CSS<\/a> que ya no necesites, como el de las p\u00e1ginas heredadas, los widgets o los frameworks. Esto puede ser dif\u00edcil en sitios grandes, y no siempre est\u00e1 claro si un determinado conjunto de estilos es esencial o no.<\/p>\n<p>Las siguientes herramientas analizan el uso de HTML y CSS en el momento de la compilaci\u00f3n o mediante el rastreo de URLs para identificar el c\u00f3digo redundante. Esto no siempre es adecuado, por lo que pueden establecerse configuraciones adicionales para garantizar que los estilos activados por JavaScript y las interacciones del usuario se permitan en la lista:<\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/uncss\/uncss\">UnCSS<\/a><\/li>\n<li><a href=\"https:\/\/unused-css.com\/\">UnusedCSS<\/a><\/li>\n<li><a href=\"https:\/\/purgecss.com\/\">PurgaCSS<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/purifycss\/purifycss\">PurifyCSS<\/a><\/li>\n<\/ul>\n<p>Hay una opci\u00f3n mejor: Dividir el CSS en archivos separados con niveles claros de responsabilidad y documentar en consecuencia. As\u00ed, la eliminaci\u00f3n de estilos innecesarios ser\u00e1 mucho m\u00e1s f\u00e1cil.<\/p>\n<h2>Optimizar el rendimiento de la carga de CSS<\/h2>\n<p>No todo el CSS se carga por igual. La humilde etiqueta <code>&lt;link&gt;<\/code> tiene una serie de opciones y peculiaridades que no siempre son l\u00f3gicas.<\/p>\n<h3>Optimizar el uso de las fuentes web<\/h3>\n<p><a href=\"https:\/\/kinsta.com\/es\/blog\/mejores-google-fonts\/\">Google Fonts<\/a> y otras fundiciones de fuentes similares han revolucionado <a href=\"https:\/\/kinsta.com\/es\/blog\/html-fuentes\/\">las fuentes web<\/a>, pero unas pocas l\u00edneas de c\u00f3digo de fuentes pueden suponer cientos de kilobytes de ancho de banda.<\/p>\n<p>Estas son nuestras sugerencias de optimizaci\u00f3n:<\/p>\n<ol>\n<li><strong>Carga solo las fuentes que necesites: <\/strong>Elimina las fuentes que no utilices y comprueba si son necesarias nuevas fuentes.<\/li>\n<li><strong>Carga solo los pesos y estilos que necesites: <\/strong>La mayor\u00eda de las fundiciones de fuentes pueden limitar la descarga a determinados conjuntos de caracteres (por ejemplo, solo latinos), pesos (grosores) y cursivas (inclinaciones). Los navegadores pueden autogenerar los estilos que faltan, aunque los resultados pueden ser pobres.<\/li>\n<li><strong>Limita los caracteres necesarios: Las fuentes de uso poco frecuente<\/strong> pueden restringirse a caracteres espec\u00edficos. Por ejemplo, el t\u00edtulo \u00abtutorial de CSS\u00bb en Open Sans puede definirse a\u00f1adiendo un par\u00e1metro <code>&text=<\/code> a la cadena de consulta de Google fonts: <code>fonts.googleapis.com\/css?family=Open+Sans&text=CStuorial<\/code><\/li>\n<li><strong>Considera las fuentes variables: <\/strong>Las fuentes variables definen una gran variedad de estilos, pesos y cursivas mediante interpolaci\u00f3n vectorial. El archivo de fuentes es un poco m\u00e1s grande, pero se necesita solo una en lugar de varias. La <a href=\"https:\/\/www.recursive.design\/\">fuente recursiva<\/a> demuestra la flexibilidad de las fuentes variables.<\/li>\n<li><strong>Carga las fuentes desde tu servidor local:<\/strong> El <a href=\"https:\/\/kinsta.com\/es\/blog\/fuentes-locales\/\">autoalojamiento de fuentes<\/a> es m\u00e1s eficiente que el uso de una fundici\u00f3n. Se requieren menos b\u00fasquedas de DNS, y puedes restringir la descarga a <a href=\"https:\/\/caniuse.com\/woff2\">WOFF2, que todos los navegadores modernos soportan<\/a>. Los navegadores m\u00e1s antiguos (te miro a ti, IE) pueden recurrir a una fuente del sistema operativo.<\/li>\n<li><strong>Piensa en las fuentes del sistema operativo: <\/strong>Esa fuente web de 500 kB puede tener un aspecto estupendo, pero \u00bfalguien se dar\u00eda cuenta si cambiaras a las fuentes habituales Helvetica, Arial, Georgia o Verdana? Las fuentes OS o <a href=\"https:\/\/kinsta.com\/es\/blog\/fuentes-seguras-para-la-web\/\">web-safe<\/a> son una forma sencilla de aumentar el rendimiento.<\/li>\n<\/ol>\n<h3>Utiliza una opci\u00f3n de carga de fuentes adecuada<\/h3>\n<p>Las fuentes web pueden tardar unos segundos en descargarse y procesarse. El navegador lo har\u00e1:<\/p>\n<ol>\n<li><strong>Mostrar un flash de texto sin estilo (FOUT): <\/strong>La primera fuente disponible se utiliza inicialmente, pero es reemplazada una vez que la fuente web est\u00e1 lista.<\/li>\n<li><strong>Mostrar un Flash de Texto Invisible (FOIT): <\/strong>No se muestra ning\u00fan texto hasta que la fuente web est\u00e9 lista. Este es el proceso por defecto en los navegadores modernos, que suelen esperar tres segundos antes de volver a una fuente de reserva.<\/li>\n<\/ol>\n<p>Ninguno de los dos es ideal. La propiedad CSS <a href=\"https:\/\/developer.mozilla.org\/docs\/Web\/CSS\/@font-face\/font-display\">font-display<\/a> y el par\u00e1metro Google Font &#038; display = pueden seleccionar una opci\u00f3n alternativa:<\/p>\n<ul>\n<li><strong>auto:<\/strong> El comportamiento por defecto del navegador (normalmente FOIT).<\/li>\n<li><strong>bloque:<\/strong> Efectivamente FOIT. El texto es invisible hasta tres segundos. No hay cambio de fuente, pero el texto puede tardar en aparecer.<\/li>\n<li><strong>swap:<\/strong> Efectivamente FOUT. Se utiliza la primera fuente alternativa hasta que la fuente web est\u00e9 disponible. El texto es inmediatamente legible, pero el efecto de cambio de fuente puede ser discordante. Se puede utilizar <a href=\"https:\/\/meowni.ca\/font-style-matcher\/\">Font Style Matcher<\/a> para definir una fuente alternativa de tama\u00f1o similar.<\/li>\n<li><strong>fallback:<\/strong> Un compromiso entre FOIT y FOUT. El texto es invisible durante un breve per\u00edodo (normalmente 100 ms), luego se utiliza el primer fallback hasta que la fuente web est\u00e9 disponible.<\/li>\n<li><strong>opcional:<\/strong> Similar al fallback, excepto que no se produce un intercambio de fuentes. La fuente web solo se utilizar\u00e1 si est\u00e1 disponible dentro del per\u00edodo inicial. La vista de la primera p\u00e1gina probablemente mostrar\u00e1 una fuente de reserva, y las siguientes vistas utilizar\u00e1n la fuente web descargada y almacenada en cach\u00e9.<\/li>\n<\/ul>\n<p>El uso de swap, fallback u opcional puede ofrecer un aumento de rendimiento percibido.<\/p>\n<h3>Evitar el CSS @import<\/h3>\n<p>La regla <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/CSS\/@import\">@import at-rule<\/a> incluir archivos CSS dentro de otros:<\/p>\n<pre><code class=\"language-css\">\/* main.css *\/\n@import url(\"reset.css\");\n@import url(\"grid.css\");\n@import url(\"widget.css\");<\/code><\/pre>\n<p>Esto parece una forma efectiva de cargar componentes y fuentes m\u00e1s peque\u00f1as. Desafortunadamente, cada @importaci\u00f3n bloquea la renderizaci\u00f3n, y cada archivo debe ser cargado y analizado en serie.<\/p>\n<p>M\u00faltiples etiquetas <code>&lt;link&gt;<\/code> dentro de HTML son m\u00e1s eficientes y cargan los archivos CSS en paralelo:<\/p>\n<pre><code class=\"language-html\">&lt;link rel=\"stylesheet\" href=\"reset.css\"&gt;\n&lt;link rel=\"stylesheet\" href=\"grid.css\"&gt;\n&lt;link rel=\"stylesheet\" href=\"widget.css\"&gt;<\/code><\/pre>\n<p>Dicho esto, es mejor&#8230;<\/p>\n<h3>Concatenar y reducir el CSS<\/h3>\n<p>Las herramientas de construcci\u00f3n modernas, los preprocesadores de CSS como Sass y los <a href=\"https:\/\/kinsta.com\/es\/blog\/combinar-css-externo\/\">plugins de WordPress pueden combinar todos los parciales en un solo archivo CSS de gran tama\u00f1o<\/a>. Los espacios en blanco, los comentarios y los caracteres innecesarios se eliminan para reducir el tama\u00f1o del archivo al m\u00ednimo.<\/p>\n<p>Los archivos m\u00faltiples suponen un problema de rendimiento menor con HTTP\/2 y <a href=\"https:\/\/kinsta.com\/es\/blog\/que-es-http3\/\">versiones superiores<\/a>, pero un solo archivo requiere una sola cabecera y puede comprimirse y almacenarse en cach\u00e9 de forma m\u00e1s eficiente.<\/p>\n<p>Los archivos CSS separados solo son pr\u00e1cticos cuando se tienen una o m\u00e1s hojas de estilo que se cambian con frecuencia, quiz\u00e1s varias veces por semana. Incluso entonces, el c\u00f3digo CSS mayoritariamente est\u00e1tico puede combinarse en un solo archivo.<\/p>\n<p>Los <a href=\"https:\/\/kinsta.com\/es\/precios\/?plan=visits-business1\">clientes de Kinsta<\/a> pueden acceder a la <a href=\"https:\/\/kinsta.com\/es\/docs\/alojamiento-wordpress\/cdn-wordpress\/kinsta-cdn\/#code-minification-1\">funci\u00f3n de minificaci\u00f3n de c\u00f3digo<\/a> en su <a href=\"https:\/\/kinsta.com\/es\/mykinsta\/\">panel de control de MyKinsta<\/a> para ayudar en esta tarea. Esta funci\u00f3n permite a los clientes activar la minificaci\u00f3n autom\u00e1tica de CSS y JavaScript con un simple clic. Esto ayuda a acelerar tu sitio sin ning\u00fan esfuerzo manual.<\/p>\n<h3>Evitar la codificaci\u00f3n Base64<\/h3>\n<p><a href=\"https:\/\/jpillora.com\/base64-encoder\/\">Las herramientas pueden codificar las im\u00e1genes en cadenas base64<\/a>, que puede utilizar como URI de datos en las etiquetas HTML <code>&lt;img&gt;<\/code> y en los fondos CSS:<\/p>\n<pre><code class=\"language-css\">.background {\n  background-image: url('data:image\/jpg;base64,ABC123...');\n}<\/code><\/pre>\n<p>Esto reduce el n\u00famero de peticiones HTTP, pero perjudica el rendimiento del CSS:<\/p>\n<ul>\n<li>Las cadenas en base64 pueden ser un 30% m\u00e1s grandes que su equivalente binario.<\/li>\n<li>los navegadores deben decodificar la cadena antes de poder utilizar una imagen, y<\/li>\n<li>La alteraci\u00f3n de un p\u00edxel de la imagen invalida todo el archivo CSS.<\/li>\n<\/ul>\n<p>Solo considera la codificaci\u00f3n base64 si utiliza im\u00e1genes muy peque\u00f1as que cambian con poca frecuencia y cuya cadena resultante no es significativamente m\u00e1s larga que una URL.<\/p>\n<p>Dicho esto, puedes codificar en UTF8 los iconos SVG reutilizables, por ejemplo<\/p>\n<pre><code class=\"language-css\">.svgbackground {\n  background-image: url('data:image\/svg+xml;utf8,&lt;svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 600 600\"&gt;&lt;circle cx=\"300\" cy=\"300\" r=\"150\" stroke-width=\"3\" stroke=\"#f00\" fill=\"#ff0\" \/&gt;&lt;\/svg&gt;');\n}<\/code><\/pre>\n<h3>Eliminar los CSS Hacks y los Fallbacks de IE<\/h3>\n<p>A menos que seas desafortunado y tengas una alta proporci\u00f3n de usuarios de Internet Explorer, las hojas de estilo condicionales de IE y los hacks pueden ser eliminados de tu CSS. En la mayor\u00eda de los casos, los usuarios de IE seguir\u00e1n viendo <em>algo<\/em>, especialmente si utilizas un dise\u00f1o mobile-first que muestra una vista lineal m\u00e1s sencilla por defecto. El resultado puede no ser bonito, y no ser\u00e1 perfecto en cuanto a p\u00edxeles, pero tu presupuesto de desarrollo est\u00e1 mejor gastado teniendo en cuenta la accesibilidad para todos los usuarios.<\/p>\n<h3>Precarga de archivos CSS<\/h3>\n<p>La etiqueta <code>&lt;link&gt;<\/code> proporciona un <a href=\"https:\/\/developer.mozilla.org\/docs\/Web\/HTML\/Preloading_content\">atributo opcional de precarga<\/a> que puede iniciar una descarga inmediatamente en lugar de esperar la referencia real en el HTML:<\/p>\n<pre><code class=\"language-html\">&lt;!DOCTYPE html&gt;\n&lt;html lang=\"en\"&gt;\n&lt;head&gt;\n  &lt;meta charset=\"UTF-8\"&gt;\n  &lt;title&gt;My page&lt;\/title&gt;\n  &lt;!-- preload styles --&gt;\n  &lt;link rel=\"preload\" href=\"\/css\/main.css\" as=\"style\" \/&gt;\n  &lt;!-- lots more code --&gt;\n  &lt;!-- load preloaded styles --&gt;\n  &lt;link rel=\"stylesheet\" href=\"\/css\/main.css\" \/&gt;<\/code><\/pre>\n<p>Esto es especialmente beneficioso en WordPress y otros CMS&#8217; donde un plugin podr\u00eda a\u00f1adir una hoja de estilos m\u00e1s abajo en la p\u00e1gina.<\/p>\n<h3>Uso de CSS cr\u00edtico en l\u00ednea<\/h3>\n<p>Las herramientas de an\u00e1lisis pueden sugerirte \u00abalinear el CSS cr\u00edtico\u00bb o \u00abreducir las hojas de estilo que bloquean la renderizaci\u00f3n\u00bb. Esto mejora el rendimiento:<\/p>\n<ol>\n<li>Identificar los estilos esenciales utilizados por los elementos por encima del pliegue (los visibles cuando se carga la p\u00e1gina)<\/li>\n<li>Inluyendo ese CSS cr\u00edtico en una etiqueta <code>&lt;style&gt;<\/code> en tu <code>&lt;head&gt;<\/code><\/li>\n<li>Cargar el resto de CSS de forma as\u00edncrona para evitar el bloqueo de la renderizaci\u00f3n. Esto puede lograrse cargando la hoja de estilos en un estilo \u00abprint\u00bb al que el navegador da una prioridad menor. Luego, JavaScript lo cambia a un estilo \u00aball\u00bb media una vez que la p\u00e1gina se ha cargado (un <code>&lt;noscript&gt;<\/code> asegura que el CSS funciona si JavaScript no est\u00e1 disponible):<\/li>\n<\/ol>\n<pre><code class=\"language-html\">&lt;style&gt;\n\/* critical styles *\/\nbody { font-family: sans-serif; color: #111; }\n&lt;\/style&gt;\n&lt;!-- load remaining styles --&gt;\n&lt;link rel=\"stylesheet\" \n     href=\"\/css\/main.css\"\n    media=\"print\" \n   onload=\"this.media='all'\"&gt;\n&lt;noscript&gt;\n  &lt;link rel=\"stylesheet\" href=\"\/css\/main.css\"&gt;\n&lt;\/noscript&gt;<\/code><\/pre>\n<p>Herramientas como <a href=\"https:\/\/github.com\/addyosmani\/critical\">critical<\/a> y <a href=\"https:\/\/github.com\/filamentgroup\/criticalCSS\">criticalCSS<\/a> pueden ayudar a extraer los estilos de los elementos de la vista.<\/p>\n<p>La t\u00e9cnica mejora notablemente el rendimiento y aumenta las puntuaciones de las auditor\u00edas. Los sitios o aplicaciones con interfaces consistentes deber\u00edan ser m\u00e1s sencillos de implementar, pero puede ser m\u00e1s dif\u00edcil en otros casos:<\/p>\n<ul>\n<li>Una herramienta de construcci\u00f3n es esencial para todos los sitios, excepto los m\u00e1s sencillos.<\/li>\n<li>El \u00abpliegue\u00bb es diferente en cada dispositivo.<\/li>\n<li>Los sitios pueden tener una variedad de dise\u00f1os que requieren diferentes CSS cr\u00edticos.<\/li>\n<li>Las herramientas CSS cr\u00edticas pueden tener problemas con marcos espec\u00edficos, HTML generado en el lado del cliente y contenido din\u00e1mico.<\/li>\n<li>Esta t\u00e9cnica beneficia sobre todo a la carga de la primera p\u00e1gina. El CSS se almacena en la cach\u00e9 para las p\u00e1ginas siguientes, por lo que los estilos alineados adicionales aumentar\u00e1n el peso de la p\u00e1gina.<\/li>\n<\/ul>\n<h3>Utiliza el renderizado de consulta de medios<\/h3>\n<p>Un \u00fanico concatenado y minificado beneficiar\u00e1 a la mayor\u00eda de los sitios, pero los sitios que requieren una cantidad significativa de estilos de pantalla m\u00e1s grandes podr\u00edan dividir los archivos CSS y cargarlos utilizando una consulta de medios:<\/p>\n<pre><code class=\"language-html\">&lt;!-- core styles loaded on all devices --&gt;\n&lt;link rel=\"stylesheet\" href=\"core.css\"&gt;\n&lt;!-- served to screens at least 40em wide --&gt;\n&lt;link rel=\"stylesheet\" media=\"(min-width: 40em)\" href=\"40em.css\"&gt;\n&lt;!-- served to screens at least 80em wide --&gt;\n&lt;link rel=\"stylesheet\" media=\"(min-width: 80em)\" href=\"80em.css\"&gt;<\/code><\/pre>\n<p>Este ejemplo presupone una metodolog\u00eda \u00abmobile-first\u00bb. Los dispositivos m\u00f3viles cargan <strong>core.css <\/strong>pero no necesitan descargar o analizar el resto de hojas de estilo.<\/p>\n<h3>Utiliza el renderizado progresivo<\/h3>\n<p>El renderizado progresivo es una t\u00e9cnica que define hojas de estilo individuales para p\u00e1ginas o componentes separados. Puede beneficiar a sitios muy grandes donde las p\u00e1ginas individuales se construyen a partir de una amplia gama de componentes.<\/p>\n<p>Cada archivo CSS se carga inmediatamente antes de que un componente sea referenciado en el HTML:<\/p>\n<pre><code class=\"language-html\">&lt;head&gt;\n  &lt;!-- core styles --&gt;\n  &lt;link rel=\"stylesheet\" href=\"core.css\" \/&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n  &lt;!-- header --&gt;\n  &lt;link rel=\"stylesheet\" href=\"header.css\" \/&gt;\n  &lt;header&gt;...&lt;\/header&gt;\n  &lt;!-- primary content --&gt;\n  &lt;link rel=\"stylesheet\" href=\"main.css\" \/&gt;\n  &lt;main&gt;\n    &lt;!-- widget styling --&gt;\n    &lt;link rel=\"stylesheet\" href=\"widget.css\" \/&gt;\n    &lt;div class=\"mywidget&gt;...&lt;\/div&gt;\n  &lt;\/main&gt;\n  &lt;!-- footer --&gt;\n  &lt;link rel=\"stylesheet\" href=\"footer.css\" \/&gt;\n  &lt;footer&gt;...&lt;\/footer&gt;\n&lt;\/body&gt;<\/code><\/pre>\n<p>Esto funciona bien en la mayor\u00eda de los navegadores. (Safari muestra una p\u00e1gina en blanco hasta que se carga todo el CSS, pero no deber\u00eda ser notablemente peor que una sola hoja de estilos grande).<\/p>\n<p>La adopci\u00f3n de Web Components tambi\u00e9n fomenta el uso de estilos de alcance que se cargan cuando se renderiza el elemento personalizado.<\/p>\n<h2>Optimizar el rendimiento del CSS<\/h2>\n<p>Las t\u00e9cnicas y propiedades de CSS ejercen diferentes presiones sobre el navegador, la CPU, la memoria, el ancho de banda y otros recursos. Los siguientes consejos pueden ayudarte a evitar el procesamiento innecesario y la lentitud en el rendimiento.<\/p>\n<h3>Adoptar t\u00e9cnicas modernas de dise\u00f1o (Grid y Flexbox)<\/h3>\n<p>Los dise\u00f1os basados en flotadores son dif\u00edciles de crear, utilizan numerosas propiedades, requieren continuos ajustes de m\u00e1rgenes y rellenos, deben ser gestionados mediante consultas de medios e incurren en un considerable procesamiento del navegador. Fueron el \u00fanico m\u00e9todo de dise\u00f1o viable durante muchos a\u00f1os, pero ya no son necesarios. Utiliza cualquiera de los dos:<\/p>\n<ul>\n<li><a href=\"https:\/\/kinsta.com\/es\/blog\/diseno-de-paginas-web-sensibles\/#flexbox-layout\">CSS Flexbox<\/a> para dise\u00f1os unidimensionales que pueden pasar a la siguiente fila. Es ideal para men\u00fas, galer\u00edas de im\u00e1genes, tarjetas, etc.<\/li>\n<li><a href=\"https:\/\/kinsta.com\/es\/blog\/diseno-de-paginas-web-sensibles\/#size-layout-elements-with-percentages-or-create-a-css-grid-layout\">CSS Grid<\/a> para dise\u00f1os bidimensionales con filas y columnas expl\u00edcitas. Es ideal para dise\u00f1os de p\u00e1ginas.<\/li>\n<\/ul>\n<p>Ambos son m\u00e1s sencillos de desarrollar, utilizan menos c\u00f3digo, se renderizan m\u00e1s r\u00e1pido y se adaptan a cualquier tama\u00f1o de pantalla sin necesidad de consultas de medios.<\/p>\n<p>Los navegadores muy antiguos no reconocer\u00e1n las propiedades modernas de flexbox y grid, por lo que cada elemento se convierte en un bloque. Mu\u00e9stralos en un dise\u00f1o lineal simple como el de los m\u00f3viles: <em>no hay necesidad de emular el dise\u00f1o con fallbacks basados en flotaci\u00f3n<\/em>.<\/p>\n<h3>Reemplazar im\u00e1genes con gradientes y efectos CSS<\/h3>\n<p>Siempre que sea posible, opta por el c\u00f3digo CSS en lugar de las im\u00e1genes. Experimenta con degradados, bordes, radios, sombras, filtros, modos de fusi\u00f3n, m\u00e1scaras, recortes y efectos de pseudoelementos para reutilizar o sustituir las im\u00e1genes existentes.<\/p>\n<p>Los efectos CSS utilizan mucho menos ancho de banda, son m\u00e1s f\u00e1ciles de modificar y normalmente pueden ser animados.<\/p>\n<h3>Evita el uso excesivo de propiedades<\/h3>\n<p>Puede tener un c\u00f3digo declarativo terso, pero algunos CSS requieren m\u00e1s procesamiento que otros. Las siguientes propiedades desencadenan c\u00e1lculos de pintura que pueden ser costosos cuando se utilizan en exceso:<\/p>\n<ul>\n<li><code>position: fixed<\/code><\/li>\n<li><code>border-radius<\/code><\/li>\n<li><code>box-shadow<\/code><\/li>\n<li><code>text-shadow<\/code><\/li>\n<li><code>opacity<\/code><\/li>\n<li><code>transform<\/code><\/li>\n<li><code>filter<\/code><\/li>\n<li><code>backdrop-filter<\/code><\/li>\n<li><code>background-blend-mode<\/code><\/li>\n<\/ul>\n<h3>Utiliza transiciones y animaciones CSS cuando sea posible<\/h3>\n<p>Las transiciones y animaciones CSS siempre ser\u00e1n m\u00e1s suaves que los efectos basados en JavaScript, que modifican propiedades similares. No se procesar\u00e1n en los navegadores m\u00e1s antiguos, pero como es probable que se ejecuten en dispositivos de menor capacidad, es lo mejor.<\/p>\n<p>Sin embargo, hay que evitar las animaciones excesivas. Los efectos deben mejorar la experiencia del usuario sin afectar negativamente al rendimiento o causar mareos. Comprueba la consulta de medios <a href=\"https:\/\/developer.mozilla.org\/docs\/Web\/CSS\/@media\/prefers-reduced-motion\">\u00abprefiere movimiento reducido\u00bb<\/a> y desactiva las animaciones cuando sea necesario.<\/p>\n<h3>Evita animar las propiedades que desencadenan un re-dise\u00f1o<\/h3>\n<p>Alterar las dimensiones de un elemento (ancho, alto, relleno, borde) o la posici\u00f3n (arriba, abajo, izquierda, derecha, margen) puede hacer que toda la p\u00e1gina se redistribuya en cada fotograma de la animaci\u00f3n. Las propiedades m\u00e1s eficientes para animar son:<\/p>\n<ul>\n<li><strong><code>opacity<\/code><\/strong><\/li>\n<li><strong><code>filter<\/code><\/strong>: Desenfoque, contraste, sombra y otros efectos<\/li>\n<li><strong><code>transform<\/code><\/strong>: Trasladar (mover), escalar o rotar un elemento<\/li>\n<\/ul>\n<p>Los navegadores pueden utilizar la GPU acelerada por hardware para renderizar estos efectos en su propia capa, por lo que solo se ve afectada la etapa de composici\u00f3n.<\/p>\n<p>Si tiene que animar otras propiedades, puede mejorar el rendimiento sacando el elemento del flujo de la p\u00e1gina con position: absolute.<\/p>\n<h3>Cuidado con los selectores complejos<\/h3>\n<p>Los navegadores analizar\u00e1n r\u00e1pidamente los selectores CSS m\u00e1s complejos, pero simplificarlos reduce el tama\u00f1o de los archivos y mejora el rendimiento. Los selectores complejos suelen generarse cuando se crean estructuras profundamente anidadas en preprocesadores de CSS como Sass.<\/p>\n<h3>Indica qu\u00e9 elementos cambiar\u00e1n<\/h3>\n<p>La <a href=\"https:\/\/developer.mozilla.org\/docs\/Web\/CSS\/will-change\">propiedad CSS will-change<\/a> permite advertir c\u00f3mo se modificar\u00e1 o animar\u00e1 un elemento para que el navegador pueda realizar optimizaciones por adelantado:<\/p>\n<pre><code class=\"language-css\">.myelement {\n  will-change: transform, opacity;\n}<\/code><\/pre>\n<p>Se puede definir cualquier n\u00famero de valores separados por comas, pero la propiedad solo debe utilizarse como \u00faltimo recurso para solucionar problemas de rendimiento conocidos. No debes aplicarla a demasiados elementos y aseg\u00farate de darle el tiempo suficiente para que se inicialice.<\/p>\n<h3>Considera la contenci\u00f3n del CSS<\/h3>\n<p><a href=\"https:\/\/developer.mozilla.org\/docs\/Web\/CSS\/CSS_Containment\">La contenci\u00f3n<\/a> es una nueva funci\u00f3n de CSS que puede mejorar el rendimiento al permitir identificar sub\u00e1rboles aislados de una p\u00e1gina. El navegador puede optimizar el procesamiento al renderizar -o <em>no <\/em>renderizar- un bloque de contenido DOM espec\u00edfico.<\/p>\n<p>La <a href=\"https:\/\/developer.mozilla.org\/docs\/Web\/CSS\/contain\">propiedad contain<\/a> acepta uno o m\u00e1s de los siguientes valores en una lista separada por espacios:<\/p>\n<ul>\n<li><strong><code>none<\/code><\/strong>: La contenci\u00f3n no se aplica<\/li>\n<li><strong><code>layout<\/code><\/strong>: El dise\u00f1o del elemento est\u00e1 aislado del resto de la p\u00e1gina &#8211; su contenido no afectar\u00e1 a otros elementos<\/li>\n<li><strong><code>paint<\/code><\/strong>: Los hijos del elemento no se muestran fuera de su l\u00edmite<\/li>\n<li><strong><code>size<\/code><\/strong>: El tama\u00f1o del elemento puede determinarse sin comprobar los elementos hijos: las dimensiones son independientes del contenido<\/li>\n<\/ul>\n<p>Tambi\u00e9n hay dos valores especiales disponibles:<\/p>\n<ul>\n<li><strong><code>strict<\/code><\/strong>: Se aplican todas las reglas de contenci\u00f3n (excepto ninguna)<\/li>\n<li><strong><code>content<\/code><\/strong>: Aplica el dise\u00f1o y la pintura<\/li>\n<\/ul>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-important\">\n            <h3>Important<\/h3>\n        <p>Una p\u00e1gina tiene una lista <code>&lt;ul&gt;<\/code> con <code>contain: strict<\/code>; aplicado. Si se cambia el contenido de cualquier <code>&lt;li&gt;<\/code> hijo, el navegador no recalcular\u00e1 el tama\u00f1o o la posici\u00f3n de ese elemento, de otros elementos de la lista o de cualquier otro elemento de la p\u00e1gina.<\/p>\n<\/aside>\n\n<p>La contenci\u00f3n CSS est\u00e1 soportada <a href=\"https:\/\/caniuse.com\/mdn-css_properties_contain\">en la mayor\u00eda de los navegadores modernos<\/a>. No hay soporte en Safari o en aplicaciones m\u00e1s antiguas, pero la contenci\u00f3n se puede utilizar con seguridad en estos porque el navegador simplemente ignorar\u00e1 la propiedad.<\/p>\n<h3>Reaccionar al\u00a0Save-Data<\/h3>\n<p><a href=\"https:\/\/developer.mozilla.org\/docs\/Web\/HTTP\/Headers\/Save-Data\">Save-Data<\/a> es una cabecera de petici\u00f3n HTTP que indica que el usuario ha solicitado datos reducidos. Puede estar etiquetado como modo \u00abLite\u00bb o \u00abTurbo\u00bb en algunos navegadores.<\/p>\n<p>Cuando se activa, se env\u00eda una cabecera <code>Save-Data<\/code> con cada solicitud del navegador:<\/p>\n<pre><code class=\"language-text\">GET \/main.css HTTP\/1.0\nHost: site.com\nSave-Data: on<\/code><\/pre>\n<p>El servidor puede responder en consecuencia cuando se detecta la funci\u00f3n Save-Data. En el caso de CSS, podr\u00eda enviar un dise\u00f1o lineal m\u00e1s sencillo similar al de los m\u00f3viles, utilizar una fuente OS, cambiar a colores de bloque o cargar fondos de im\u00e1genes de baja resoluci\u00f3n.<\/p>\n<p>Ten en cuenta que el servidor debe devolver la siguiente cabecera en las solicitudes modificadas para garantizar que el contenido m\u00ednimo no se almacena en la cach\u00e9 y se reutiliza cuando el usuario desactiva el modo Lite\/Turbo:<\/p>\n<pre><code class=\"language-text\">Vary: Accept-Encoding, Save-Data<\/code><\/pre>\n<p>La cabecera tambi\u00e9n puede ser detectada por el JavaScript del lado del cliente. El siguiente c\u00f3digo a\u00f1ade una clase bestUX al elemento <code>&lt;html&gt;<\/code> cuando Save-Data <em>no <\/em>est\u00e1 activado:<\/p>\n<pre><code class=\"language-js\">if ('connection' in navigator && !navigator.connection.saveData) {\n  document.documentElement.classList.add('bestUX');\n}<\/code><\/pre>\n<p>Las hojas de estilo pueden reaccionar en consecuencia sin necesidad de manipular el servidor:<\/p>\n<pre><code class=\"language-css\">\/* no hero image by default *\/\nheader {\n  background-color: #abc;\n  background-image: none;\n}\n\/* hero image when no Save-Data *\/\n.bestUX header {\n  background-image: url(\"hero.jpg\");\n}<\/code><\/pre>\n<p>La <a href=\"https:\/\/developer.mozilla.org\/docs\/Web\/CSS\/@media\/prefers-reduced-data\">consulta de medios \u00abprefers-reduced-data\u00bb<\/a> ofrece una opci\u00f3n de solo CSS como alternativa, aunque no es compatible con ning\u00fan navegador en el momento de escribir este art\u00edculo:<\/p>\n<pre><code class=\"language-css\">\/* no hero image by default *\/\nheader {\n  background-color: #abc;\n  background-image: none;\n}\n\/* hero image when no Save-Data *\/\n@media (prefers-reduced-data: no-preference) {\n  header {\n    background-image: url(\"hero.jpg\");\n  }\n}<\/code><\/pre>\n\n<h2>Resumen<\/h2>\n<p>Hay muchas opciones para optimizar el rendimiento del CSS, pero para los nuevos proyectos, considere las siguientes pr\u00e1cticas:<\/p>\n<ol>\n<li><strong>Utiliza un <\/strong><a href=\"https:\/\/kinsta.com\/es\/blog\/google-indexacion-centrada-moviles\/\">enfoque \u00abmobile-first\u00bb<\/a>: Codifica primero el dise\u00f1o m\u00f3vil m\u00e1s sencillo y luego a\u00f1ade mejoras a medida que el espacio de la pantalla y el conjunto de caracter\u00edsticas del navegador aumenten.<\/li>\n<li><strong>Dividir el CSS en archivos separados con responsabilidades identificables: <\/strong>Un preprocesador de CSS o un <a href=\"https:\/\/kinsta.com\/es\/blog\/combinar-css-externo\/\">plugin de CMS puedes combinar los parciales de CSS en un solo archivo<\/a>.<\/li>\n<li><strong>A\u00f1ade un paso de compilaci\u00f3n:<\/strong> Existen herramientas que pueden eliminar autom\u00e1ticamente el c\u00f3digo, identificar problemas, concatenar, minificar, reducir el tama\u00f1o de las im\u00e1genes, etc. La automatizaci\u00f3n facilita la vida, y es menos probable que te olvides de un paso de optimizaci\u00f3n.<\/li>\n<li><strong>Documenta tus hojas de estilo:<\/strong> Una gu\u00eda de estilo con ejemplos documentados har\u00e1 que tu c\u00f3digo sea m\u00e1s f\u00e1cil de recoger y mantener. Podr\u00e1s identificar y eliminar el CSS antiguo sin sudar.<\/li>\n<\/ol>\n<p>Por \u00faltimo, \u00a1<a href=\"https:\/\/kinsta.com\/es\/blog\/mejor-lenguaje-de-programacion-para-aprender\/#html-and-css\">aprende CSS<\/a>! Cuanto m\u00e1s sepas, menos c\u00f3digo tendr\u00e1s que escribir y m\u00e1s r\u00e1pida ser\u00e1 tu aplicaci\u00f3n web. Te convertir\u00e1 en un mejor desarrollador independientemente de las plataformas y frameworks que utilices.<\/p>\n<p><em>\u00bfQu\u00e9 otros consejos tienes para optimizar el rendimiento del CSS? Comp\u00e1rtelos en la secci\u00f3n de comentarios.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Incluso en 2021, el rendimiento de la web sigue siendo un problema. Seg\u00fan HTTP Archive, la p\u00e1gina media requiere una descarga de 2 MB, realiza m\u00e1s &#8230;<\/p>\n","protected":false},"author":188,"featured_media":44165,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[81,403],"topic":[1351],"class_list":["post-44161","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-css","tag-web-development","topic-rendimiento-de-wordpress"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>C\u00f3mo Optimizar el CSS para Sacar el M\u00e1ximo Rendimiento del Sitio<\/title>\n<meta name=\"description\" content=\"El CSS puede parecer bastante inocente, pero puede requerir un procesamiento pesado. Utiliza esta gu\u00eda para optimizar correctamente el CSS y mejorar el rendimiento del sitio.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/es\/blog\/optimizar-css\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"C\u00f3mo Optimizar el CSS para Sacar el M\u00e1ximo Rendimiento del Sitio\" \/>\n<meta property=\"og:description\" content=\"El CSS puede parecer bastante inocente, pero puede requerir un procesamiento pesado. Utiliza esta gu\u00eda para optimizar correctamente el CSS y mejorar el rendimiento del sitio.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/es\/blog\/optimizar-css\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinsta.es\/\" \/>\n<meta property=\"article:published_time\" content=\"2021-10-04T09:47:51+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-23T09:10:09+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2021\/10\/optimize-css.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Craig Buckler\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"El CSS puede parecer bastante inocente, pero puede requerir un procesamiento pesado. Utiliza esta gu\u00eda para optimizar correctamente el CSS y mejorar el rendimiento del sitio.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2021\/10\/optimize-css.jpeg\" \/>\n<meta name=\"twitter:creator\" content=\"@craigbuckler\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_ES\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Craig Buckler\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"27 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/optimizar-css\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/optimizar-css\/\"},\"author\":{\"name\":\"Craig Buckler\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/person\/715d986404b06691ab3014e06596908e\"},\"headline\":\"C\u00f3mo Optimizar el CSS para Sacar el M\u00e1ximo Rendimiento del Sitio\",\"datePublished\":\"2021-10-04T09:47:51+00:00\",\"dateModified\":\"2023-08-23T09:10:09+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/optimizar-css\/\"},\"wordCount\":5902,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/es\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/optimizar-css\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2021\/10\/optimize-css.jpeg\",\"keywords\":[\"css\",\"web development\"],\"articleSection\":[\"Tutoriales de rendimienro de WordPress\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/es\/blog\/optimizar-css\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/optimizar-css\/\",\"url\":\"https:\/\/kinsta.com\/es\/blog\/optimizar-css\/\",\"name\":\"C\u00f3mo Optimizar el CSS para Sacar el M\u00e1ximo Rendimiento del Sitio\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/es\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/optimizar-css\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/optimizar-css\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2021\/10\/optimize-css.jpeg\",\"datePublished\":\"2021-10-04T09:47:51+00:00\",\"dateModified\":\"2023-08-23T09:10:09+00:00\",\"description\":\"El CSS puede parecer bastante inocente, pero puede requerir un procesamiento pesado. Utiliza esta gu\u00eda para optimizar correctamente el CSS y mejorar el rendimiento del sitio.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/optimizar-css\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/es\/blog\/optimizar-css\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/optimizar-css\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2021\/10\/optimize-css.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2021\/10\/optimize-css.jpeg\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/optimizar-css\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/es\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Rendimiento de WordPress\",\"item\":\"https:\/\/kinsta.com\/es\/secciones\/rendimiento-de-wordpress\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"C\u00f3mo Optimizar el CSS para Sacar el M\u00e1ximo Rendimiento del Sitio\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/es\/#website\",\"url\":\"https:\/\/kinsta.com\/es\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Soluciones de alojamiento premium, r\u00e1pidas y seguras\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/es\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/es\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/es\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/es\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinsta.es\/\",\"https:\/\/x.com\/Kinsta_ES\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/person\/715d986404b06691ab3014e06596908e\",\"name\":\"Craig Buckler\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/8e76011e66720bd2e3e24e164aa6f0b2?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/8e76011e66720bd2e3e24e164aa6f0b2?s=96&d=mm&r=g\",\"caption\":\"Craig Buckler\"},\"description\":\"Freelance UK web developer, writer, and speaker. Has been around a long time and rants about standards and performance.\",\"sameAs\":[\"https:\/\/craigbuckler.com\/\",\"https:\/\/www.linkedin.com\/in\/craigbuckler\",\"https:\/\/x.com\/craigbuckler\",\"https:\/\/www.youtube.com\/channel\/UCQwdl5oBTWGhifS6bRGADMQ\"],\"url\":\"https:\/\/kinsta.com\/es\/blog\/author\/craigbuckler\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"C\u00f3mo Optimizar el CSS para Sacar el M\u00e1ximo Rendimiento del Sitio","description":"El CSS puede parecer bastante inocente, pero puede requerir un procesamiento pesado. Utiliza esta gu\u00eda para optimizar correctamente el CSS y mejorar el rendimiento del sitio.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/es\/blog\/optimizar-css\/","og_locale":"es_ES","og_type":"article","og_title":"C\u00f3mo Optimizar el CSS para Sacar el M\u00e1ximo Rendimiento del Sitio","og_description":"El CSS puede parecer bastante inocente, pero puede requerir un procesamiento pesado. Utiliza esta gu\u00eda para optimizar correctamente el CSS y mejorar el rendimiento del sitio.","og_url":"https:\/\/kinsta.com\/es\/blog\/optimizar-css\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinsta.es\/","article_published_time":"2021-10-04T09:47:51+00:00","article_modified_time":"2023-08-23T09:10:09+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2021\/10\/optimize-css.jpeg","type":"image\/jpeg"}],"author":"Craig Buckler","twitter_card":"summary_large_image","twitter_description":"El CSS puede parecer bastante inocente, pero puede requerir un procesamiento pesado. Utiliza esta gu\u00eda para optimizar correctamente el CSS y mejorar el rendimiento del sitio.","twitter_image":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2021\/10\/optimize-css.jpeg","twitter_creator":"@craigbuckler","twitter_site":"@Kinsta_ES","twitter_misc":{"Escrito por":"Craig Buckler","Tiempo de lectura":"27 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/es\/blog\/optimizar-css\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/es\/blog\/optimizar-css\/"},"author":{"name":"Craig Buckler","@id":"https:\/\/kinsta.com\/es\/#\/schema\/person\/715d986404b06691ab3014e06596908e"},"headline":"C\u00f3mo Optimizar el CSS para Sacar el M\u00e1ximo Rendimiento del Sitio","datePublished":"2021-10-04T09:47:51+00:00","dateModified":"2023-08-23T09:10:09+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/es\/blog\/optimizar-css\/"},"wordCount":5902,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/es\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/es\/blog\/optimizar-css\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2021\/10\/optimize-css.jpeg","keywords":["css","web development"],"articleSection":["Tutoriales de rendimienro de WordPress"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/es\/blog\/optimizar-css\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/es\/blog\/optimizar-css\/","url":"https:\/\/kinsta.com\/es\/blog\/optimizar-css\/","name":"C\u00f3mo Optimizar el CSS para Sacar el M\u00e1ximo Rendimiento del Sitio","isPartOf":{"@id":"https:\/\/kinsta.com\/es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/es\/blog\/optimizar-css\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/es\/blog\/optimizar-css\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2021\/10\/optimize-css.jpeg","datePublished":"2021-10-04T09:47:51+00:00","dateModified":"2023-08-23T09:10:09+00:00","description":"El CSS puede parecer bastante inocente, pero puede requerir un procesamiento pesado. Utiliza esta gu\u00eda para optimizar correctamente el CSS y mejorar el rendimiento del sitio.","breadcrumb":{"@id":"https:\/\/kinsta.com\/es\/blog\/optimizar-css\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/es\/blog\/optimizar-css\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinsta.com\/es\/blog\/optimizar-css\/#primaryimage","url":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2021\/10\/optimize-css.jpeg","contentUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2021\/10\/optimize-css.jpeg","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/es\/blog\/optimizar-css\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/es\/"},{"@type":"ListItem","position":2,"name":"Rendimiento de WordPress","item":"https:\/\/kinsta.com\/es\/secciones\/rendimiento-de-wordpress\/"},{"@type":"ListItem","position":3,"name":"C\u00f3mo Optimizar el CSS para Sacar el M\u00e1ximo Rendimiento del Sitio"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/es\/#website","url":"https:\/\/kinsta.com\/es\/","name":"Kinsta\u00ae","description":"Soluciones de alojamiento premium, r\u00e1pidas y seguras","publisher":{"@id":"https:\/\/kinsta.com\/es\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/es\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/es\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinsta.es\/","https:\/\/x.com\/Kinsta_ES","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/es\/#\/schema\/person\/715d986404b06691ab3014e06596908e","name":"Craig Buckler","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinsta.com\/es\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/8e76011e66720bd2e3e24e164aa6f0b2?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/8e76011e66720bd2e3e24e164aa6f0b2?s=96&d=mm&r=g","caption":"Craig Buckler"},"description":"Freelance UK web developer, writer, and speaker. Has been around a long time and rants about standards and performance.","sameAs":["https:\/\/craigbuckler.com\/","https:\/\/www.linkedin.com\/in\/craigbuckler","https:\/\/x.com\/craigbuckler","https:\/\/www.youtube.com\/channel\/UCQwdl5oBTWGhifS6bRGADMQ"],"url":"https:\/\/kinsta.com\/es\/blog\/author\/craigbuckler\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts\/44161","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/users\/188"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/comments?post=44161"}],"version-history":[{"count":16,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts\/44161\/revisions"}],"predecessor-version":[{"id":52165,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts\/44161\/revisions\/52165"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/44161\/translations\/en"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/44161\/translations\/de"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/44161\/translations\/it"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/44161\/translations\/fr"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/44161\/translations\/pt"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/44161\/translations\/es"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/44161\/translations\/nl"},{"href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/44161\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/media\/44165"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/media?parent=44161"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/tags?post=44161"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/topic?post=44161"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}