Procurou e tentou muito: é possível eliminar o bloqueio de renderização manualmente

Eu quero eliminar manualmente o bloqueio de renderização para aumentar a velocidade.

Estive procurando por solução no google nos últimos dois dias.

Tentou-se abaixo de 3 soluções em functions.php. Isso realmente funcionou no entanto …

  1. eliminado de scripts de meio js e ainda recebo a mesma mensagem para outros js.
  2. não eliminou do CSS

Solução 1

add_filter( 'clean_url', function( $url ) { if ( FALSE === strpos( $url, '.js' ) ) { return $url; } return "$url' defer='defer"; }, 11, 1 ); 

Soluções 2 fornecidas aqui

 add_action('customize_register', 'customizer'); function defer_parsing_of_js ( $url ) { if ( FALSE === strpos( $url, '.js' ) ) return $url; if ( strpos( $url, 'jquery.js' ) ) return $url; return "$url' defer "; } add_filter( 'clean_url', 'defer_parsing_of_js', 11, 1 ); 

Soluções 3

 // add async and defer to javascripts function wcs_defer_javascripts ( $url ) { if ( FALSE === strpos( $url, '.js' ) ) return $url; if ( strpos( $url, 'jquery.js' ) ) return $url; return "$url' async='async"; } add_filter( 'clean_url', 'wcs_defer_javascripts', 11, 1 ); 

Por favor, não sugira nenhum plugin. Eu tentei o cache do w3, o autoptimize e muitos mais.

W3 cache fez o trabalho, mas isso não é uma solução permanente. Como o site se deforma uma vez que o cache do w3 está desativado (o site não retorna ao normal, mesmo após a reativação ).

A solução 4 adicionou este código antes

  function downloadJSAtOnload() { var links = ["wp-content/themes/TL/library/js/scriptsslider.js", "wp-content/themes/TL/library/js/scriptsslider.js"], headElement = document.getElementsByTagName("head")[0], linkElement, i; for (i = 0; i < links.length; i++) { linkElement = document.createElement("script"); linkElement.src = links[i]; headElement.appendChild(linkElement); } } if (window.addEventListener) window.addEventListener("load", downloadJSAtOnload, false); else if (window.attachEvent) window.attachEvent("onload", downloadJSAtOnload); else window.onload = downloadJSAtOnload;  

Solutions Collecting From Web of "Procurou e tentou muito: é possível eliminar o bloqueio de renderização manualmente"

Se você deseja adiar o carregamento do css, veja a otimização de entrega do CSS: como adiar o carregamento do css? .

Se você deseja adiar o carregamento de js, você pode usar isso:

 add_filter( 'script_loader_tag', function( $tag, $handle ) { return str_replace( "

Infelizmente, usar “adiar” não elimina as tiras de bloqueio de renderização. Também não usa async. O que você precisa fazer é descarregar todos os arquivos javascript e, em seguida, adicioná-los cuidadosamente em sua página no window.onload . Isso permite que a página seja carregada completamente antes de include qualquer javascript. Você precisaria ter cuidado com as dependencies, pois muitos de seus scripts exigirão que o jQuery seja carregado primeiro.

Este artigo é útil sobre como realmente adiar o carregamento do javascipt . O cerne de ser usar algo como isto:

  

Eu teria uma function js_loader () que você pode passar uma matriz de caminhos de script em ordem e ter que adicioná-los à página.