现代浏览器性能优化示例-提前加载prefetch:

prefetch就是在核心代码 加载完成后,浏览器有空闲就会帮我们prefetch预取资源

请注意,prefetch 是一种优化手段,而不是必须使用的功能。在决定是否使用它之前,请确保你的应用程序已经进行了其他必要的性能优化(如代码压缩、图片优化、使用CDN等)。不要为所有资源都添加 prefetch滥用 prefetch 可能会导致不必要的带宽浪费和服务器压力。不同的用户可能有不同的网络连接速度。对于使用慢速连接的用户,预取大量资源可能会对他们的体验产生负面影响。
虽然大多数现代浏览器都支持prefetch,但仍有一些旧版浏览器或非主流浏览器可能不支持该特性。 有些网站使用了按需加载这个时候就没有必要使用prefetch了

哪些资源需要用prefetch

  1. 分析用户的行为模式,找出他们经常访问的页面或资源。这些资源是 prefetch 的好候选,因为它们在未来被访问的可能性很高。
  2. 较大的资源(如JavaScript库、CSS文件或图片)可能更适合使用 prefetch,因为它们需要更长的时间来下载。通过预取这些资源,你可以确保在用户需要它们时它们已经缓存好了。
  3. 一些资源虽然不是当前页面所必需的,但对于用户体验来说很重要(如用户反馈表单、评论框、聊天窗口等)。这些资源可以通过 prefetch 提前加载,以确保在用户需要时能够迅速显示。

使用Lighthouse、WebPageTest或其他性能监控工具来评估添加 prefetch 后页面的加载速度和性能。

index.html
<!DOCTYPE html>  
<html lang="en">  
<head>  <meta charset="UTF-8">  <meta name="viewport" content="width=device-width, initial-scale=1.0">  <title>Prefetch Example</title>  <script>  // 在页面加载完成后执行  window.addEventListener('load', function() {  console.log('加载了')// 假设我们预测用户可能会访问 /next-page.html  // 因此,我们预取那个页面的资源  var prefetchLink = document.createElement('link');  prefetchLink.rel = 'prefetch';  prefetchLink.as = 'document'; // 指定预取资源的类型  prefetchLink.href = '/next-page.html'; // 指定要预取的资源的URL  // 将预取链接添加到HTML文档的<head>部分  document.head.appendChild(prefetchLink);  // 注意:这里只是预取了HTML文档,如果你还知道/next-page.html需要的其他资源(如CSS、JS文件),  // 你也可以为它们添加类似的<link rel="prefetch">标签。  console.log('Prefetch link added for /next-page.html');  });  </script>  
</head>  
<body>  <!-- 页面内容 -->  <h1>Prefetch Example</h1>  <p>This page demonstrates how to use prefetch with native JavaScript.</p>  <a href="/next-page.html">Go to Next Page</a>  
</body>  
</html>
next-page.html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><link rel="stylesheet" href="./next-page.css">
</head>
<body>next-page.html**请注意,prefetch 是一种优化手段,而不是必须使用的功能。在决定是否使用它之前,请确保你的应用程序已经进行了其他必要的性能优化**(如代码压缩、图片优化、使用CDN等)。不要为所有资源都添加 prefetch滥用 prefetch 可能会导致不必要的带宽浪费和服务器压力。不同的用户可能有不同的网络连接速度。对于使用慢速连接的用户,预取大量资源可能会对他们的体验产生负面影响。
</body>
</html>

在chrome-network下禁用缓存,然后看nerwork的type有没有prefetch的资源,然后来前后对比加载时间,当然不是那么容易复现的

与浏览器自动预取资源不同,你需要手动在Webpack生成的HTML文件中添加prefetch链接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/14590.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《Python学习》-- 入门篇一

一、概述 Python是一门由Guido van Rossum于20世纪80年代末开发的高级编程语言&#xff0c;并在1991年首次发布。它同JAVA一样是一门解释性语言&#xff0c;它的性能不如C、golang等编译型语言&#xff0c;但它具有入门门槛低、开发效率高等优点。2008年发布了Python3.0的版本&…

链游:区块链技术的游戏新纪元

随着区块链技术的快速发展&#xff0c;越来越多的行业开始探索与其结合的可能性&#xff0c;其中&#xff0c;游戏行业与区块链的结合尤为引人注目。链游&#xff0c;即基于区块链技术的游戏&#xff0c;正以其独特的优势&#xff0c;为玩家带来全新的游戏体验。本文将对链游进…

QQ技术导航源码附带交易系统

网站功能 QQ登录 友联自助交换 友情链接交易功能 多功能搜索 ico小图标本地化 网站图片本地化 蜘蛛日志 文章评论 网站评论 自助链接匿名提交站点&#xff0c;添加友链访问网站自动审核通过 VIP 会员等级 VIP 付费升级 单个文章或者站点付费快审 多背景图片可自定义背景图片…

c语言bug汇总中篇5

40. 不关注代码风格一致性 代码风格一致性有助于提高代码的可读性和可维护性。如果团队成员使用不同的代码风格&#xff0c;会导致代码看起来杂乱无章&#xff0c;增加阅读和理解的成本。 为了保持代码风格的一致性&#xff0c;程序员应该&#xff1a; - 遵循团队或项目约定的…

200smart【编程入门】

说明 编程时&#xff0c;遇到困难就按【F1】 【I】输入 200smart 上限 i0.0~i31.7 255bit【255个输入点】 i0.0~i31.7 八进制 【布尔 bool 】 ib0~ib127 【单字节】 8bit iw0~iw127 …

【FAQ】HarmonyOS SDK 闭源开放能力 —Map Kit(2)

1.问题描述&#xff1a; 能否设置点击地图&#xff0c;地图标记上的文字不消失&#xff1f; 解决方案&#xff1a; 你好&#xff0c;这个功能设计本身就是点击屏幕marker的信息窗消失&#xff1b;如果用户只是想信息窗中的文字一直展示&#xff0c;可以不用信息窗实现 &…

springBoot+springSecurity基本认证流程

springBootspringSecurity认证流程 整合springSecurity 对应springboot版本&#xff0c;直接加依赖&#xff0c;这样版本不会错 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId…

SpringMVC接收请求参数的方式:

接收简单变量的请求参数 直接使用简单变量作为形参进行接收&#xff08;这里简单变量名称需要与接收的参数名称保持一致&#xff0c;否则需要加上RequestParam注解&#xff09;&#xff1a; 细节&#xff1a; 1&#xff1a;SpringMVC会针对常见类型&#xff08;八种基本类型及…

MQTT到串口的转发(node.js)

本文针对以下应用场景&#xff1a;已有通过串口通信的设备或软件&#xff0c;想要实现跨网的远程控制。 node.js安装 从 Node.js — Run JavaScript Everywhere下载LTS版本安装包&#xff0c;运行安装程序。&#xff08;傻瓜安装&#xff0c;按提示点击即可&#xff09; 设置环…

网络传输层

叠甲&#xff1a;以下文章主要是依靠我的实际编码学习中总结出来的经验之谈&#xff0c;求逻辑自洽&#xff0c;不能百分百保证正确&#xff0c;有错误、未定义、不合适的内容请尽情指出&#xff01; 文章目录 1.端口号的基础2.传输层两协议2.1.UDP 协议2.1.1.协议结构2.1.2.封…

传统关系型数据库与hive的区别

数据库和Hive之间存在本质的区别&#xff0c;主要体现在设计目的、数据处理方式、数据存储、查询延迟、数据更新能力、以及适用场景等方面。下面详细阐述它们之间的主要差异&#xff1a; 设计目的与应用场景&#xff1a; 数据库&#xff1a;主要是面向事务处理&#xff08;OLTP…

虚拟海外仓用什么系统,怎么选性价比高适合自己的WMS系统

虚拟海外仓作为一种新兴的仓储模式&#xff0c;还是收到很多跨境卖家欢迎的。然而对虚拟海外仓的经营企业来说&#xff0c;选择什么样的wms系统来提升自己仓库管理的效率&#xff0c;还是需要花费一些心思的。 1.虚拟海外仓有什么特点 所谓的虚拟海外仓&#xff0c;就是整合全…

CPP Con 2020:Type Traits I

先谈谈Meta Programming 啥是元编程呢&#xff1f;很简单&#xff0c;就是那些将其他程序当作数据来进行处理和传递的编程&#xff08;私人感觉有点类似于函数式&#xff1f;&#xff09;这个其他程序可以是自己也可以是其他程序。元编程可以发生在编译时也可以发生在运行时。…

LAMDA面试准备(2024-05-23)

有没有学习过机器学习&#xff0c;提问了 FP-Growth 相比 Apriori 的优点 1. 更高的效率和更少的计算量&#xff08;时间&#xff09; FP-Growth 通过构建和遍历 FP-树 (Frequent Pattern Tree) 来挖掘频繁项集&#xff0c;而不需要像 Apriori 那样生成和测试大量的候选项集。具…

【阿里前端面试题】知道了解浏览器渲染对自己有什么帮助?

大家好&#xff0c;我是“寻找DX3906”。每天进步一点。日积月累&#xff0c;有朝一日定会厚积薄发&#xff01; 前言&#xff1a; 前面已经和大家分享了3篇面试题&#xff1a; 《【阿里前端面试题】浏览器的加载渲染过程》 《【阿里前端面试题】客户端和服务器交互&#xff0…

5.23.2 深度学习提高乳房 X 光检查中乳腺癌的检测率

开发了一种深度学习算法&#xff0c;该算法可以使用“端到端”训练方法在筛查乳房 X 光检查中准确检测出乳腺癌&#xff0c;该方法有效地利用了具有完整临床注释或仅具有整个图像的癌症 标签 的训练数据集。 在这种方法中&#xff0c;仅在初始训练阶段才需要病变注释&#xff…

springboot vue 开源 会员收银系统 (2) 搭建基础框架

前言 完整版演示 前面我们对会员系统https://blog.csdn.net/qq_35238367/article/details/126174288进行了分析 确定了技术选型 和基本的模块 下面我们将从 springboot脚手架开发一套收银系统 使用脚手架的好处 不用编写基础的rabc权限系统将工作量回归业务本身生成代码 便于…

conda使用常用命令

Conda是一个非常常用的Python包管理器&#xff0c;也是Anaconda Python发行版的一部分。它可以帮助用户安装、更新、卸载Python包&#xff0c;以及管理Python虚拟环境。在这篇博客中&#xff0c;我们将总结一些常用的Conda命令及其用法。 安装和更新Conda 在使用Conda之前&…

React 性能优化

性能优化 React 性能优化方案&#xff0c;说出来可能有很多&#xff0c;但是那些是所有前端项目、框架都需要做的。如 代码分割&#xff0c;代码压缩&#xff0c;使用生产版本的代码等&#xff08;前端框架都需要&#xff0c;通用方案&#xff09; 渲染列表时合理使用 key &a…

Tensorflow入门实战 P01-实现手写数字识别mnist

目录 1、背景&#xff1a;MNIST手写数字识别 2、完整代码&#xff08;Tensorflow&#xff09;&#xff1a; 3、运行过程及结果&#xff1a; 4、小结&#xff08;还是很清晰的&#xff09; 5、 展望 &#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客…