预加载图片到底该用 link 还是 img 标签?

UE丶姿言 阅读 21

我在做首页性能优化,想提前加载几张关键图片,但搞不清该用 <link rel="preload"> 还是直接 new Image()?

试过在 head 里加 preload,但 DevTools 里看到这些图片还是等到页面解析到 img 标签才真正请求,感觉没生效。是不是我写法有问题?

<link rel="preload" as="image" href="/hero-banner.jpg" rel="external nofollow" >
<img src="/hero-banner.jpg" alt="banner">
我来解答 赞 0 收藏
二维码
手机扫码查看
1 条解答
设计师燕丽
说到预加载图片这事,我可有一肚子血泪教训。先说结论:两种方式都能用,但得看具体场景。

link preload确实能提前发起请求,但有个坑要注意:如果你在里写了preload,后面的src路径必须完全一致,包括域名和路径大小写,不然浏览器会认为是两个资源,导致重复请求。

你这种情况,建议检查下路径是否完全匹配。另外preload需要服务器正确响应HTTP头里的Link预加载提示,如果服务器配置不对也可能无效。

如果想简单点,直接用new Image()其实也挺好:
let img = new Image();
img.src = '/hero-banner.jpg';

这个方法更稳妥,虽然不如preload那么“标准”,但至少不会出现资源不匹配的问题。

说实话,我之前为了preload折腾了好久,最后发现简单粗暴的方法反而更靠谱。开发这事儿啊,有时候太追求规范反而容易踩坑。
点赞
2026-03-27 19:04