Google PageSpeed通常建议优化CSS传递。我想到如果像这样内联所有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?
link
也会这样做,但是link
可能会被某些供应商异步加载链接的文件。而将CSS内容塞入HTML页面中则无法实现这一点。脚本标签最后才会被委派执行的原因是有道理的 - 同样的逻辑也适用于所有内容。 - Dan