2022-08-31 05:13:00
HTML链接预加载通过rel="preload"属性实现,用于提前加载当前页面必需的关键资源(如CSS、JS、字体等),以提升加载速度和用户体验。 以下是具体用法和注意事项:
基本语法使用<link>标签,设置rel="preload",并指定以下关键属性:
<link rel="preload" href="资源路径" as="资源类型" [type="MIME类型"] [crossorigin]>as指定资源类型,常见值包括:
style:CSS文件
script:JavaScript文件
font:字体文件(需配合type和crossorigin)
image:图片
video:视频(如首帧或关键帧)
fetch:通过fetch()或XHR加载的资源
type明确资源的MIME类型,例如:
字体:type="font/woff2"
视频:type="video/mp4"
crossorigin跨域资源(如CDN字体)必须添加此属性,否则可能被浏览器忽略或触发重复请求。
CSS文件
<link rel="preload" href="styles/main.css" as="style">JavaScript文件
<link rel="preload" href="app.js" as="script">字体文件
<link rel="preload" href="fonts/myfont.woff2" as="font" type="font/woff2" crossorigin>关键图片
<link rel="preload" href="hero.jpg" as="image">视频首帧
<link rel="preload" href="intro.mp4" as="video">仅预加载关键资源避免滥用preload,仅针对当前页面必需的资源(如首屏CSS、JS、字体等),否则可能增加带宽消耗。
确保as属性准确错误的类型(如将CSS误标为script)会导致预加载失效,浏览器可能忽略资源或降低优先级。
跨域资源处理加载跨域字体时必须添加crossorigin属性,否则可能触发CORS错误或重复请求。
浏览器兼容性
现代浏览器(Chrome、Firefox、Edge、Safari)均支持preload。
老旧浏览器(如IE)可能不识别,需通过特性检测或降级方案处理。
避免替代defer/async
非关键JS仍建议使用defer或async加载,而非preload。
preload仅提前获取资源,不执行JS或应用CSS,需配合后续标签(如<script>或<link rel="stylesheet">)使用。
合理使用rel="preload"可显著减少关键资源加载延迟,但需注意:
通过规范使用,可优化页面渲染速度,提升用户体验。