DNS Prefetch初认识

今天在看一个后台框架时,发现这样的代码:

<link rel="dns-prefetch" href="//0.s3.envato.com"> <link rel="dns-prefetch" href="//thumb-tf.s3.envato.com" /> <link rel="dns-prefetch" href="//user-profile.s3.envato.com"> <link rel="dns-prefetch" href="//image-tf.s3.envato.com" />

 赶紧搜索了一下,DNS Prefetch也就是DNS预获取,是前端DNS优化中的其中一点,另外一点嘛,就是减少DNS查询的次数。

浏览器支持情况:

  • Firefox: 3.5+
  • Chrome: Supported
  • Safari 5+
  • Opera: Unknown
  • IE: 9 (called “Pre-resolution” on blogs.msdn.com)

默认情况下浏览器会对页面中和当前域名(正在浏览网页的域名)不在同一个域的域名进行预获取,并且缓存结果,这就是隐式的DNS Prefetch。如果想对页面中没有出现的域进行预获取,那么就要使用显示的DNS Prefetch了,也就是使用link标签。

下面我们来简单了解一下dns-prefetch:

DNS 作为互联网的基础协议,其解析的速度似乎容易被网站优化人员忽视。现在大多数新浏览器已经针对DNS解析进行了优化,典型的一次DNS解析耗费20-120 毫秒,减少DNS解析时间和次数是个很好的优化方式。DNS Prefetching是具有此属性的域名不需要用户点击链接就在后台解析,而域名解析和内容载入是串行的网络操作,所以这个方式能减少用户的等待时间,提升用户体验。

浏览器对网站第一次的域名DNS解析查找流程依次为:

浏览器缓存-系统缓存-路由器缓存-ISP DNS缓存-递归搜索

Chrome内置了DNS Prefetching技术, Firefox 3.5 也引入了这一特性,由于Chrome和Firefox 3.5本身对DNS预解析做了相应优化设置,所以设置DNS预解析的不良影响之一就是可能会降低Google Chrome浏览器及火狐Firefox 3.5浏览器的用户体验。

预解析的实现:

1. 用meta信息来告知浏览器, 当前页面要做DNS预解析:<meta http-equiv="x-dns-prefetch-control" content="on" />

2. 在页面header中使用link标签来强制对DNS预解析: <link rel="dns-prefetch" href="http://bdimg.share.baidu.com" />

注:dns-prefetch需慎用,多页面重复DNS预解析会增加重复DNS查询次数。

另外引一篇写的很好的文章

http://www.cnblogs.com/suyuwen1/p/5506397.html;

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏IMWeb前端团队

腾讯云从零部署nodejs站点

最近入手了一台腾讯云机子,用于团队社区站点的建设,站点架构: 数据库服务:mongodb 后台:nodejs + express 接入:nginx   整个购买...

4570
来自专栏互联网技术栈

Tair数据迁移三步走

在多机房数据迁移中,整个过程分为三个阶段:历史数据迁移阶段、redolog迁移阶段、实时复制阶段。

1153
来自专栏运维技术迷

DNS服务器4013警告信息的解决方法

今天例行维护域控,发现一直出现DNS无法启动,一直在提示4013,感觉很不可思议。对比另外一台辅助域控的设置,都没有问题。只好一步一步的来细致的检查,终于被我找...

3286
来自专栏Laoqi's Linux运维专列

Nginx为什么比Apache 高效

什么是阻塞:就是线程在执行IO操作获取数据时,这个IO可能会需要一定的时间才能等到数据返回,然后才能接着执行下面的命令。那么,此时,这个线程的等待状态我们就把它...

3026
来自专栏步履前行

Java基础系列---Java平台上的一些问题

  从学习Java开始,我们接触了许多框架,从Hibernate、Strus、Strus2、Spring、Spring MVC、Spring boot等等,做J...

911
来自专栏24K纯开源

mac下利用Breakpad的dump文件进行调试

一、前情回顾 最近把公司的一个视频处理程序更新了一个版本,准备提交测试的发现了崩溃的情况。这个程序采用Qt和ffmpeg技术栈开发,主要用于对视频进行渲染拼接处...

6059
来自专栏帘卷西风的专栏

linux编译curl库的动态库so

转载请注明出处:帘卷西风的专栏(http://blog.csdn.net/ljxfblog) 

821
来自专栏张善友的专栏

SQL Server 2005的负载均衡

SQL Server 2005仍然不直接地支持负载均衡——但是它为以前SQL Server版本中可用的所有负载均衡方法提供了令人激动的改善和支持。   目录 1...

21510
来自专栏星汉技术

虚拟机:Linux系统安装

2747
来自专栏性能与架构

前端构建工具grunt

grunt是什么 grunt是目前非常流行的前端构建工具,支持自定义插件,有丰富的插件帮助我们完成构建任务 自动化完成我们指定的任务,例如压缩、编译、单元测试、...

3405

扫码关注云+社区

领取腾讯云代金券