prefetch vs preload vs prerender vs preconnect All In One
prefetch vs preload vs prerender vs preconnect All In One
前端性能优化
prefetch
预获取
https://developer.mozilla.org/zh-CN/docs/Web/Performance/dns-prefetch
DNS-prefetch (DNS 预获取) 是尝试在请求资源之前解析域名。这可能是后面要加载的文件,也可能是用户尝试打开的链接目标。
为什么要使用 dns-prefetch?
当浏览器从(第三方)服务器请求资源时,必须先将该跨域域名解析为 IP地址,然后浏览器才能发出请求。
此过程称为 DNS解析。
DNS 缓存可以帮助减少此延迟,而 DNS解析可以导致请求增加明显的延迟。
对于打开了与许多第三方的连接的网站,此延迟可能会大大降低加载性能。
dns-prefetch 可帮助开发人员掩盖 DNS解析延迟。
HTML 元素 通过 dns-prefetch的 rel 属性值提供此功能。然后在 href属性中指要跨域的域名:
<html>
<head>
<link rel="dns-prefetch" href="https://fonts.gstatic.com/">
<!-- and all other head elements -->
</head>
<body>
<!-- your page content -->
</body>
</html>
crossorigin & preconnect
<link rel="preconnect" href="https://fonts.gstatic.com/" crossorigin>
<link rel="dns-prefetch" href="https://fonts.gstatic.com/">
每当站点引用跨域域上的资源时,都应在 元素中放置 dns-prefetch提示,但是要记住一些注意事项。
最佳实践
请记住以下三点:
首先,dns-prefetch 仅对跨域域上的 DNS查找有效,因此请避免使用它来指向您的站点或域。
这是因为,到浏览器看到提示时,您站点域背后的IP已经被解析。其次,还可以通过使用 HTTP链接字段将 dns-prefetch(以及其他资源提示)指定为 HTTP标头:
Link: <https://fonts.gstatic.com/>; rel=dns-prefetch
- 第三,考虑将 dns-prefetch 与 preconnect(预连接)提示配对。
尽管 dns-prefetch 仅执行 DNS查找,但preconnect 会建立与服务器的连接。
如果站点是通过HTTPS服务的,则此过程包括DNS解析,建立TCP连接以及执行TLS握手。
将两者结合起来可提供进一步减少跨域请求的感知延迟的机会。
您可以安全地将它们一起使用,如下所示:
<link rel="preconnect" href="https://fonts.gstatic.com/" crossorigin>
<link rel="dns-prefetch" href="https://fonts.gstatic.com/">
Note:
如果页面需要建立与许多第三方域的连接,则将它们预先连接会适得其反。
preconnect 提示最好仅用于最关键的连接。
对于其他的,只需使用 即可节省第一步的时间-DNS查找。
配对这些提示的逻辑是因为对dns-prefetch的支持比对预连接的支持要好。
不支持预连接的浏览器仍然可以通过回退到dns-prefetch来获得更多好处。
由于这是HTML功能,因此非常容错。如果不支持的浏览器遇到dns-prefetch提示(或任何其他资源提示),则您的网站不会中断。
您只是不会获得它提供的好处。
一些资源(如字体)以匿名模式加载。
在这种情况下,应使用预连接提示设置 crossorigin 属性。
如果您省略它,则浏览器将仅执行DNS查找。

preconnect
预连接
https://developer.mozilla.org/zh-CN/docs/Web/Performance/preconnect ???
<link rel="preconnect" href="https://fonts.gstatic.com/" crossorigin>
<link rel="dns-prefetch" href="https://fonts.gstatic.com/">
preload
预加载


https://alligator.io/html/preload-prefetch/#preloading-javascript
https://www.digitalocean.com/community/tutorials/html-preload-prefetch
prerender
预渲染
dns-prefetch
DNS 预获取
<html>
<head>
<link rel="dns-prefetch" href="https://fonts.google.com/specimen/Lobster">
<!-- and all other head elements -->
</head>
<body>
<!-- your page content -->
</body>
</html>
https://developer.mozilla.org/en-US/docs/Web/Performance/dns-prefetch
refs
https://www.cnblogs.com/xgqfrms/p/8984852.html
xgqfrms 2012-2020
www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!
prefetch vs preload vs prerender vs preconnect All In One的更多相关文章
- prefetch & preload & prerender & dns-prefetch & preconnect
prefetch & preload & prerender & dns-prefetch & preconnect performance optimization ...
- prefetch 和 preload 及 webpack 的相关处理
使用预取和预加载是网站性能和用户体验提升的一个很好的途径,本文介绍了使用 prefetch 和 prefetch 进行预取和预加载的方法,并使用 webpack 进行实现 Link 的链接类型 < ...
- Webpack 4教程 - 第八部分 使用prefetch和preload进行动态加载
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者.原文出处:https://wanago.io/2018/08/13/webpack-4-course-part ...
- prefetch和preload
前面的话 基于VUE的前端小站改造成SSR服务器端渲染后,HTML文档会自动使用preload和prefetch来预加载所需资源,本文将详细介绍preload和prefetch的使用 资源优先级 在介 ...
- Preload,Prefetch 和它们在 Chrome 之中的优先级
前言 上周五到的时候,想起之前在手游平台上有处理dns-prefetch的优化,那这篇分享的就更仔细了.今日早读文章由@gy134340翻译并授权分享. 正文从这开始- 今天我们来深入研究一下 Chr ...
- Web 性能优化:Preload与Prefetch的使用及在 Chrome 中的优先级
摘要: 理解Preload与Prefetch. 原文:Web 性能优化:Preload,Prefetch的使用及在 Chrome 中的优先级 作者:前端小智 Fundebug经授权转载,版权归原作者所 ...
- preload、prefetch的认识
预加载 现在的网络情况虽然很乐观,但是 defer和async 当浏览器碰到 script 脚本的时候: <script src="script.js"></sc ...
- [PWA] Optimize Assets Delivery using preload and prefetch
By default, browsers load the assets in a render-blocking way. Modern browsers introduced prefetch a ...
- preload & prefetch
原文地址在 我的笔记里,觉得还行就给个 star 吧:) 关于 preload 和 prefetch 早有耳闻,知道它们可以优化页面加载速度,然具体情况却了解不多.搜索了相关的资料后对其有了些认识,在 ...
随机推荐
- pycharm安装完成后的一些基本设置
1.设置背景色 file-->Setting-->Appearance&Behavior-->Appearance 2.设置主题 settings --> editor ...
- Soul API 网关源码解析 02
如何读开源项目:对着文档跑demo,对着demo看代码,懂一点就开始试,有问题了问社区. 今日目标: 1.运行examples下面的 http服务 2.学习文档,结合divde插件,发起http请求s ...
- flume agent的内部原理
flume agent 内部原理 1.Source采集数据,EventBuilder.withBody(body)将数据封装成Event对象,source.getChannelProcessor( ...
- 为什么从REST转向gRPC 需要流式传输搜索结果,也就是在有第一批结果时就开始传输
https://mp.weixin.qq.com/s/aEO3Y8SkObNgfQU3z8sH2w 我们为什么从REST转向gRPC 原创 Levin Fritz InfoQ 2019-06-23 作 ...
- Redis 底层数据结构设计
10万+QPS 真的只是因为单线程和基于内存?_Howinfun的博客-CSDN博客_qps面试题 https://blog.csdn.net/Howinfun/article/details/105 ...
- new的过程是怎样的?看完这一篇就懂了
在现实世界中,找对象是一门学问,找对象不在于多而在于精 在计算机世界中,面向对象编程的关键在于能否灵活地运用类,如何设计出一个符合需求的对象也是也是值得学习和思考的. 那么,面向对象编程到底是什么? ...
- 在项目中如何自定义的Eslint配置
一.设置js风格的缩进为4个空格 在你的前端项目中找到.eslintrc.js文件,如图 module.exports = { root: true, parserOptions: { parser: ...
- JDBC连接Oracle实现增、删、改操作
jsp页面的form表单 AddMentaction实现向数据新增数据操作 DeleteMent删除操作 UpdateMent修改操作 最近在做一个练习项目"在线考试系统",在将整 ...
- Hive 使用总结
1 带分区列的表更改列类型 常见的一个场景是Hive里面一个带分区的表,原来是int类型的字段,后来发现数据超过了int的最大值,要改成bigint.或者是bigint要改string或decimal ...
- centos /usr/local 和/opt 安装软件你什么不同../configure --prefix=/usr...
/usr/local下一般是你安装软件的目录,这个目录就相当于在windows下的programefiles这个目录(所有文件在一个文件夹) /opt这个目录是一些大型软件的安装目录,或者是一些服务程 ...