为什么给关键CSS文件添加了preload链接标签后加载速度反而变慢了?

上官毅蒙 阅读 108

我在优化网站首页加载时,给关键CSS文件加了preload标签:<link rel="preload" href="/styles/main.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" >,但监控显示首屏渲染反而比之前慢了0.5秒。明明这个CSS是首屏必须的,

试过把属性改成as="style"和添加crossorigin都没改善。在Chrome网络面板里看到这个CSS确实被提前加载了,但DOMContentLoaded时间反而推迟了。是不是preload用法哪里有问题?

相关代码片段:


<link rel="preload" href="/styles/main.css" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  as="style">
<link rel="stylesheet" href="/styles/main.css" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  crossorigin>

服务器响应头里也没有设置字段,这会不会影响资源使用?其他资源的preload都没问题,就这个CSS特别奇怪。

我来解答 赞 15 收藏
二维码
手机扫码查看
2 条解答
娇娇
娇娇 Lv1
preload会导致浏览器提前下载但不应用资源,你得确保CSS被正确解析。把标签顺序调换下就解决了:

<link rel="stylesheet" href="/styles/main.css" crossorigin>
<link rel="preload" href="/styles/main.css" as="style">


preload得在样式真正加载后才会生效,就这样。
点赞 8
2026-02-02 11:03
UX-彤彤
UX-彤彤 Lv1
preload加载的资源默认是惰性的,浏览器不会自动应用CSS,你需要确保在DOM中存在。你现在的问题是preload和stylesheet重复加载了同一个CSS,导致浪费时间。去掉preload标签,直接用