相关文章推荐
性感的小蝌蚪  ·  政府電腦保安事故協調中心 - 保安警報 ...·  1 月前    · 
深沉的伏特加  ·  政府電腦保安事故協調中心 - 保安警報 ...·  1 月前    · 
叛逆的充电器  ·  Jenkins+Sonar质量门禁【实践篇- ...·  1 月前    · 
腼腆的伤疤  ·  [AI人工智慧] EasyOCR v.s. ...·  1 月前    · 
谦和的电池  ·  图像清晰度评估工具与方法·  2 周前    · 
严肃的苦咖啡  ·  巴黎航展,中国展团“有备而来”--国际--人民网·  2 月前    · 
打酱油的啄木鸟  ·  盛世谣言背后的历史、法律与社会--中国法学网·  4 月前    · 
豪爽的毛豆  ·  英文地址写法 - RJ - 博客园·  1 年前    · 
闷骚的伤疤  ·  Install Nginx and ...·  1 年前    · 
讲道义的小虾米  ·  斗罗:开局钓到朱竹清最新章节全文无弹窗在线阅 ...·  2 年前    · 
Code  ›  用 preload 预加载页面资源开发者社区
https
https://cloud.tencent.com/developer/article/1511149
逆袭的红酒
2 年前
作者头像
ConardLi
0 篇文章

用 preload 预加载页面资源

前往专栏
腾讯云
开发者社区
文档 意见反馈 控制台
首页
学习
活动
专区
工具
TVP
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP
返回腾讯云官网
社区首页 > 专栏 > code秘密花园 > 用 preload 预加载页面资源

用 preload 预加载页面资源

作者头像
ConardLi
发布 于 2019-09-23 18:55:34
1.3K 0
发布 于 2019-09-23 18:55:34
举报

用 preload 预加载页面资源

作者简介 felix 蚂蚁金服·数据体验技术团队 https://github.com/ProtoTeam/blog/blob/master/201802/1.md

本文主要介绍preload的使用,以及与prefetch的区别。然后会聊聊浏览器的加载优先级。

preload 提供了一种声明式的命令,让浏览器提前加载指定资源(加载后并不执行),在需要执行的时候再执行。提供的好处主要是

  • 将加载和执行分离开,可不阻塞渲染和 document 的 onload 事件
  • 提前加载指定资源,不再出现依赖的font字体隔了一段时间才刷出

如何使用 preload

使用 link 标签创建

<!-- 使用 link 标签静态标记需要预加载的资源 -->
<link rel="preload" href="/path/to/style.css" as="style">
<!-- 或使用脚本动态创建一个 link 标签后插入到 head 头部 -->
<script>
const link = document.createElement('link');
link.rel = 'preload';
link.as = 'style';
link.href = '/path/to/style.css';
document.head.appendChild(link);
</script>

使用 HTTP 响应头的 Link 字段创建

Link: <https://example.com/other/styles.css>; rel=preload; as=style

如我们常用到的 antd 会依赖一个 CDN 上的 font.js 字体文件,我们可以设置为提前加载,以及有一些模块虽然是按需异步加载,但在某些场景下知道其必定会加载的,则可以设置 preload 进行预加载,如:

<link rel="preload" as="font"   href="https://at.alicdn.com/t/font_zck90zmlh7hf47vi.woff">
<link rel="preload" as="script" href="https://a.xxx.com/xxx/PcCommon.js">
<link rel="preload" as="script" href="https://a.xxx.com/xxx/TabsPc.js">

如何判断浏览器是否支持 preload

目前我们支持的浏览器主要为高版本 Chrome,所以可放心使用 preload 技术。其他环境在 caniuse.com 上查到的支持情况如下:

在不支持 preload 的浏览器环境中,会忽略对应的 link 标签,而若需要做特征检测的话,则:

const isPreloadSupported = () => {
  const link = document.createElement('link');
  const relList = link.relList;
  if (!relList || !relList.supports) {
    return false;
 
推荐文章
性感的小蝌蚪  ·  政府電腦保安事故協調中心 - 保安警報 (A25-07-15): Oracle Java 及 Oracle 產品多個漏洞 (2025年7月)
1 月前
深沉的伏特加  ·  政府電腦保安事故協調中心 - 保安警報 (A25-01-12): Oracle Java 及 Oracle 產品多個漏洞 (2025年1月)
1 月前
叛逆的充电器  ·  Jenkins+Sonar质量门禁【实践篇-pipeline版】 - windysai
1 月前
腼腆的伤疤  ·  [AI人工智慧] EasyOCR v.s. PaddleOCR 誰才是圖片轉文字(OCR)的最佳神器?!
1 月前
谦和的电池  ·  图像清晰度评估工具与方法
2 周前
严肃的苦咖啡  ·  巴黎航展,中国展团“有备而来”--国际--人民网
2 月前
打酱油的啄木鸟  ·  盛世谣言背后的历史、法律与社会--中国法学网
4 月前
豪爽的毛豆  ·  英文地址写法 - RJ - 博客园
1 年前
闷骚的伤疤  ·  Install Nginx and configure it as a reverse proxy server - ASP.NET Core | Microsoft Learn
1 年前
讲道义的小虾米  ·  斗罗:开局钓到朱竹清最新章节全文无弹窗在线阅读-QQ阅读男生网
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号