Google pagespeed表示要使用内联JavaScript

时间:2017-03-24 16:00:37

标签: google-pagespeed render-blocking

在我的项目(Preloaders.net)上我有很多脚本,因为它是一个网络应用程序。没有办法让一些"一些" css和js。我将所有内容合并到一个文件中,但Google Pagespeed仍然习惯于删除"渲染阻止CSS和JS"。所以我只是让CSS和JS显示内联HTML。 Google pagespeed现在对内联CSS感到高兴,但它看起来确实很愚蠢 - 因为现在JS和CSS不会被缓存在所有其他页面上。打破CSS和JS几乎是无用的,也是不可能的,因为它对于web-app来说都是必要的。

所以现在我被撕裂了 - 这对用户表现最好:Google"愚蠢"或渲染阻塞css和js?

提前多多感谢。

1 个答案:

答案 0 :(得分:1)

而不是内联javascript只需加载延迟标志或异步:

<script src="whatever.js" async></script>

这将解决js问题。

至于css - 仅内联每个页面的内容,并以异步方式加载其余样式(来自https://developers.google.com/speed/docs/insights/OptimizeCSSDelivery):

<html>
  <head>
  <style>
    .blue{color:blue;}
  </style>
  </head>
<body>
  <div class="blue">
    Hello, world!
  </div>
  <noscript id="deferred-styles">
    <link rel="stylesheet" type="text/css" href="small.css"/>
  </noscript>
  <script>
    var loadDeferredStyles = function() {
      var addStylesNode = document.getElementById("deferred-styles");
      var replacement = document.createElement("div");
      replacement.innerHTML = addStylesNode.textContent;
      document.body.appendChild(replacement)
      addStylesNode.parentElement.removeChild(addStylesNode);
    };
    var raf = requestAnimationFrame || mozRequestAnimationFrame ||
        webkitRequestAnimationFrame || msRequestAnimationFrame;
    if (raf) raf(function() { window.setTimeout(loadDeferredStyles, 0); });
    else window.addEventListener('load', loadDeferredStyles);
  </script>
</body>