visualización renderizado recursos quitar que optimizar los entrega eliminar elimina contenido cargar carga bloqueen bloquea async asincrona archivos antes and javascript html css google-pagespeed deferred-loading

javascript - renderizado - CSS optimización de entrega: ¿Cómo aplazar la carga de css?



quitar el javascript que bloquea el renderizado de contenido wordpress (5)

ADVERTENCIA: body{background-image: url("http://example.com/image.jpg");} en archivos css hará que sus archivos css sigan bloqueando la reproducción.

Si probó todas las soluciones anteriores y aún recibe la advertencia de bloqueo de procesamiento de PageSpeed ​​insights, entonces probablemente tenga esta regla de estilo en sus archivos css. Después de horas de pruebas, resulta que esta regla es lo que hace que TODO mi css se marque como recursos de bloqueo de procesamiento en los conocimientos de PageSpeed. Encontré que el mismo problema ha sido discutido antes .

No sé por qué body{background-image: url(...) hace esto para todos los archivos css. Aunque tengo diferentes recursos de imágenes en el archivo para los botones, iconos, ... etc.

Arreglé esto moviendo esta regla desde el archivo .css y la puse en los estilos en línea. Desafortunadamente, tendrá que romper su plan de css y poner la regla en todos sus archivos HTML de diseños en lugar de estar en un archivo css que se importe en todos sus diseños HTML, pero los 90 y el color verde en PageSpeed ​​insights lo merecen.

Estoy intentando optimizar la entrega de CSS siguiendo la documentación de google para desarrolladores https://developers.google.com/speed/docs/insights/OptimizeCSSDelivery#example

Como puede ver en el ejemplo de alinear un archivo CSS pequeño, el CSS crítico se inserta en el encabezado y el archivo small.css original se carga después de la carga de la página .

<html> <head> <style> .blue{color:blue;} </style> </head> <body> <div class="blue"> Hello, world! </div> </body> </html> <noscript><link rel="stylesheet" href="small.css"></noscript>

Mi pregunta con respecto a este ejemplo:

¿Cómo cargar un archivo css grande después de la carga de la página?


Además de la respuesta de Fred:

Solución utilizando jQuery & Noscript

<html> <head> <style> .blue{color:blue;} </style> <script type="text/javascript" src="../jquery-1.4.2.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ if($("body").size()>0){ if (document.createStyleSheet){ document.createStyleSheet(''style.css''); } else { $("head").append($("<link rel=''stylesheet'' href=''style.css'' type=''text/css'' media=''screen'' />")); } } }); </script> </head> <body> <div class="blue"> Hello, world! </div> </body> </html> <noscript><link rel="stylesheet" href="small.css"></noscript>

de http://www.vidalquevedo.com/how-to-load-css-stylesheets-dynamically-with-jquery

Usando Javascript puro y Noscript

<html> <head> <style> .blue{color:blue;} </style> <script type="text/javascript"> var stylesheet = document.createElement(''link''); stylesheet.href = ''style.css''; stylesheet.rel = ''stylesheet''; stylesheet.type = ''text/css''; document.getElementsByTagName(''head'')[0].appendChild(stylesheet); </script> </head> <body> <div class="blue"> Hello, world! </div> </body> </html> <noscript><link rel="stylesheet" href="small.css"></noscript>


Prueba este fragmento

El author afirma que fue publicado por el equipo de PageSpeed ​​de Google.

<script> var cb = function() { var l = document.createElement(''link''); l.rel = ''stylesheet''; l.href = ''yourCSSfile.css''; var h = document.getElementsByTagName(''head'')[0]; h.parentNode.insertBefore(l, h); }; var raf = requestAnimationFrame || mozRequestAnimationFrame || webkitRequestAnimationFrame || msRequestAnimationFrame; if (raf) raf(cb); else window.addEventListener(''load'', cb); </script>


Si no te importa usar jQuery, aquí hay un simple fragmento de código para ayudarte. (De lo contrario comenta y escribiré un ejemplo de pure-js

function loadStyleSheet(src) { if (document.createStyleSheet){ document.createStyleSheet(src); } else { $("head").append($("<link rel=''stylesheet'' href=''"+src+"'' type=''text/css'' media=''screen'' />")); } };

Simplemente llámelo a su función $(document).ready() o window.onload y window.onload listo.

Para el # 2, ¿por qué no lo intentas? Deshabilita Javascript en tu navegador y mira!

Por cierto , es asombroso hasta dónde puede llegar una simple búsqueda de Google; para la consulta "post load css" , este fue el cuarto hit ... http://www.vidalquevedo.com/how-to-load-css-stylesheets-dynamically-with-jquery


Una pequeña modificación a la función proporcionada por Fred para hacerla más eficiente y libre de jQuery. Estoy usando esta función en producción para mis sitios web

// to defer the loading of stylesheets // just add it right before the </body> tag // and before any javaScript file inclusion (for performance) function loadStyleSheet(src){ if (document.createStyleSheet) document.createStyleSheet(src); else { var stylesheet = document.createElement(''link''); stylesheet.href = src; stylesheet.rel = ''stylesheet''; stylesheet.type = ''text/css''; document.getElementsByTagName(''head'')[0].appendChild(stylesheet); } }