【前端优化】dns-prefetch

诞生背景:

  1、DNS:domain name system,域名系统,浏览器请求第三方服务器资源时,必须要将该域名解析为ip地址,浏览器才能发出请求,这个过着叫DNS。DNS实现了域名到ip的映射

  2、DNS请求虽然占用了很少的带宽,但会有很高的延迟,尤其在移动端会更加明显。

  DNS缓存可以帮助减少此延迟,而DNS解析会导致请求增加明显的延迟。对于打开了与许多第三方连接的网站,此延迟会降低加载性能,例如:淘宝、京东

  3、火狐浏览器上使用dns-prefetch,它是与页面加载并行处理的,不会影响到页面加载的性能

 

什么是dns-prefetch:

  DNS预解析,尝试在请求资源之前解析域名。可能是后面要加载的文件,也可能是用户将要打开的链接

  dns-prefetch可以帮助开发人员掩盖DNS解析延迟

  HTML属性,容错性非常好。不支持的浏览器遇到dns-prefetch提示,网站不会被中断

 

如何设置dns-prefetch:

  如果需要浏览器对特定的域名进行解析,可以在页面中添加link标签实现,例如:

  <link rel="dns-prefetch" href="//g.alicdn.com" />
  <link rel="dns-prefetch" href="//img.alicdn.com" />

 

注意事项:

  1、dns-prefetch仅仅对跨域域上的DNS查找有效,因此避免使用dns-prefetch指向自己的站点或域。因为当浏览器执行到这行时,你设置的站点或域背后的ip已经被解析了,写了也是白写

  2、如果该站点是通过https服务的,则此过程包括DNS解析,建立TCP连接以及执行TLS握手。可以将dns-prefetch与preconnect一起使用,dns-prefetch仅执行DNS预解析,preconnect会建立与服务器的连接,将二者结合起来可以进一步减少跨域请求的延迟

    <link rel="preconnect" href="https://fonts.gstatic.com/" crossorigin>
    <link rel="dns-prefetch" href="https://fonts.gstatic.com/">

    tip:如果页面需要建立许多与第三方的连接,将它们预先连接会适得其反。preconnect最好仅使用在最关键的那个连接上,其他的连接只需使用dns-prefetch即可节省DNS查找的时间

  3、dns-prefetch有个默认加载条件,网页中使用a标签href属性带的域名,不需要在head标签中加link手动设置的。但是a标签的默认启动在https不起作用,这时需要使用meta里面http-equiv来强制启动功能

    <meta http-equiv="x-dns-prefetch-control" content="on">

 

典型案例:

  1、淘宝

    

  2、京东

    

 

posted @   吴小明-  阅读(850)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结
历史上的今天:
2020-02-26 vue-day07&day08----路由、路由常用的配置项、vue路由的内置组件、vue路由跳转的方式、路由传值、路由解耦(路由传值的一种方式)、编程式导航、嵌套路由children、路由元信息meta、路由生命周期(路由守卫)、路由懒加载、vue/cli、webpack配置alias、vue/cli中配置alias、vue-router底层原理、单页面开发的缺点、路由报错
点击右上角即可分享
微信分享提示