我在使用谷歌的PageSpeed Insights测试我的网站时发现,它告诉我可以通过延迟加载非关键资源来提高CSS传递速度。具体地说,它提到了Font Awesome的引入:
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css">
我想将它的加载延迟,只需将其放在闭合body标签之前的脚本之前,如下所示:
...
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css">
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script src="js/min/scripts.min.js"></script>
</body>
</html>
然而!当查看谷歌有关交付速度的文档时,我发现了两种不同的解决方案。
在我的母语荷兰语中(您可以在右下角更改文档的语言),文档指出我应该将非必要的CSS放置在HTML结束标签之后。这对我来说似乎非常奇怪。这样做是否会在尝试通过JS访问文件时使事情变得复杂?为什么不将其放在结束body标签之前?
...
</body>
</html>
<link rel="stylesheet" href="small.css">
然而,在英文文档中,情况变得更加复杂,需要使用JavaScript:
...
<script>
var cb = function() {
var l = document.createElement('link'); l.rel = 'stylesheet';
l.href = 'small.css';
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>
</body>
</html>
为什么需要JS?这有点过分了吗?
我的做法有什么问题? 为什么不能在关闭的body标签之前加载非关键CSS?