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

时间:2014-11-10 12:31:30

标签: jquery css asp.net-mvc seo

当我使用Google Page Speed Insights

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

在bundle.config中我有:

        bundles.Add(new StyleBundle("~/Content/css").Include(
                  "~/Content/bootstrap.css",
                  "~/Content/site.css"
                  ));

在_Layout.cshtml中

@Styles.Render("~/Content/css")

1 个答案:

答案 0 :(得分: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")

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