延迟渲染阻止ASP.NET MVC中的CSS包

Sta*_*Man 2 css asp.net-mvc seo jquery

当我使用Google Page Speed Insights时

它说我的CSS是渲染阻塞的,因此减慢了页面的初始加载速度.在以前的项目中,我使用Javascript动态添加了CSS,这很好地推迟了加载.那么在使用bundle时防止渲染阻塞的最佳方法是什么?

在bundle.config我有:

        bundles.Add(new StyleBundle("~/Content/css").Include(
                  "~/Content/bootstrap.css",
                  "~/Content/site.css"
                  ));
Run Code Online (Sandbox Code Playgroud)

在_Layout.cshtml中

@Styles.Render("~/Content/css")
Run Code Online (Sandbox Code Playgroud)

Sta*_*Man 10

我通过使用以下HTML找到了一个解决方案:

<script type="text/javascript">

    function load_css_async(filename) {


        var cb = function () {
            var l = document.createElement('link'); l.rel = 'stylesheet';
            l.href = filename;
            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>


@Styles.RenderFormat("<script type=\"text/javascript\">load_css_async('{0}')</script>", "~/Content/css")
Run Code Online (Sandbox Code Playgroud)

这让我在Page Insights中获得了100/100 :)