为什么关键CSS加载优先级不够高?
我在做首页性能优化时发现,虽然我把首屏样式内联了,但Lighthouse还是提示“移除阻塞渲染的资源”。我试过用 preload 加载关键 CSS 文件,但好像浏览器还是没把它当高优先级处理,这是为啥?
我的写法是这样的:
<head>
<link rel="preload" href="/critical.css" rel="external nofollow" rel="external nofollow" as="style">
<link rel="stylesheet" href="/critical.css" rel="external nofollow" rel="external nofollow" >
</head>
是不是 preload 和 stylesheet 这样一起用反而有问题?或者我漏了什么属性?
更靠谱的做法是直接用preload加载,然后在onload事件里改成stylesheet。我给你个优化后的代码:
另外检查下服务端是否正确设置了响应头的content-type为text/css,不然preload可能不会按预期工作。
还有个细节要注意,preload的as属性必须写对,你这里写的是style没问题,但很多人会漏掉这个。
如果还不行的话,可以试试把preload放在更靠前的位置,有时候浏览器对head里的资源加载顺序挺迷的。