为什么用了后页面加载反而变慢了?

芸菡(打工版) 阅读 37

我在单页应用里给下一个路由的CSS文件加了<link rel='prefetch'>,但实际测试发现首屏渲染反而比之前慢了0.5秒,这是为什么呢?

我尝试在路由切换时动态插入预加载标签:

const nextCss = document.createElement('link');
nextCss.rel = 'prefetch';
nextCss.href = '/next-page.css';
document.head.appendChild(nextCss);

但监控显示预加载的CSS文件竟然在首屏渲染阶段就被下载了,导致主线程阻塞。明明prefetch应该是低优先级请求啊?而且这个CSS文件有200KB,会不会太大了?

其他尝试都失败了:
1. 换成preload后性能反而好了
2. 把文件拆分到50KB还是有延迟
3. 检查网络面板发现prefetch优先级比静态资源高

我来解答 赞 8 收藏
二维码
手机扫码查看
1 条解答
Air-梓希
确实应该是低优先级,但浏览器实现可能会有差异,尤其对大文件。我一般直接用link/rel=modulepreload或者干脆把CSS内嵌到JS里打包。如果非要prefetch,试试加个as=style属性:
<link rel="prefetch" href="/next-page.css" as="style">
不过你这情况,换成可能更合适,别纠结了。
点赞 7
2026-01-31 07:00