c# - 我应该以编程方式内联所有 CSS 文件以优化页面加载速度吗?

标签 c# html css asp.net-mvc pagespeed

Google PageSpeed 经常建议到 optimize CSS delivery .我想到像这样内联所有 CSS 会减少网络往返次数:

<style type="text/css">

    @{ 
        var bootstrap = File.ReadAllText(Server.MapPath("bootstrap.min.css"));
        var bootstrapTheme = File.ReadAllText(Server.MapPath("theme.min.css"));
        var fontAwesome = File.ReadAllText(Server.MapPath("font-awesome.min.css"));
        var bigfont = File.ReadAllText(Server.MapPath("bigfont.min.css"));
        var bigfontPrint = File.ReadAllText(Server.MapPath("bigfont-print.min.css"));
    }

    @Html.Raw(bootstrap)
    @Html.Raw(bootstrapTheme)
    @Html.Raw(fontAwesome)
    @Html.Raw(bigfont)
    @Html.Raw(bigfontPrint)

</style>

这似乎是解决页面加载缓慢问题的合理解决方案,并将我的 PageSpeed 分数从 88 提高到 95。

暂时将代码风格放在一边,不以这种方式内联所有 CSS 存在哪些技术原因(如果有的话)?

最佳答案

内联所有 CSS 意味着它无法被缓存,因此每个页面加载都将包含所需的所有 CSS,当您使用大型库时,这确实会浪费大量带宽。例如,Bootstrap 是 120k 左右。请注意您共享的 Google 链接指定以下内容(强调我的):

If the external CSS resources are small, you can insert those directly into the HTML document, which is called inlining.

因此,单个页面加载可能会更快,但总体而言可能会更慢。

就我个人而言,我不会这样做。但是,您可以做的一件事是将所有 CSS 捆绑到一个请求中(您使用的是 MVC,所以这相对简单),因此您只需为您的 CSS 和请求的所有 future 页面做一次额外的服务器访问浏览器将不需要再次询问它们。

关于c# - 我应该以编程方式内联所有 CSS 文件以优化页面加载速度吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32814706/

相关文章:

c# - 从 XML 到 PLIST 的转换

c# - 更新母版页计时器上的内容页控件 TIck

javascript - 如何使用 href 提交表单并将隐藏值发送到 Controller

html - CSS格式化表格行宽和列宽

.net - 在单个模板多元素站点中组织 CSS 和 Javascript

c# - 此查询的 lambda 等价物是什么

html - 带有 svg-icon 的剪辑彩虹动画

JQuery 克隆 <select> 元素

html - 为什么这个 HTML div 下面有额外的空间但上面没有

html - 将图像置于 CSS div 表的中心?