dns prefetch/pre-resolve hostname - 效果如何?

Stu*_*ows 36 html dns http

我一直在阅读这是如何工作的,但我正在努力理解它.

根据我的判断,如果我设置<link rel="dns-prefetch" href="//ajax.googleapis.com" />在我的网页的头部,我应该看到更快的请求完成是我引用此域上的任何资产.[参考文献]

现在有两个问题困扰着我:

1)这仅对将来的页面请求有帮助吗?

我的意思是,如果我使用谷歌的CDN 在我的网站的每个页面上获取jQuery 将添加<link />上述任何差异?或者它只会帮助,比如说,我没有在我的主页上引用CDN,而是在所有其他页面上?在第二个选项中,用户将点击主页,解析并缓存准备好在我的内容页面上下载的DNS主机.

2)我如何测试这个的有效性?

我想如果我知道答案,我会更好地理解问题1.我正在尝试使用Firebug和Chrome开发人员工具,并观察网络和资源面板,但我看到没有显着差异.我能看到的唯一趋势是,如果有的话,我在使用时需要更长时间才能完成我的请求<link />!

我已经阅读了关于MDNChromium博客的文档(两者都老了!)但我还是没有得到它.

任何帮助将不胜感激 - 谢谢!

更新 - 22/01/2013

只是阅读更多关于这个问题的内容,并认为我应该为同样问题的人提供链接.csswizardry写了一篇很棒的关于性能的文章,在这篇文章中引用了这个问题,并链接到了perfplanet的更多研究.如果有人有更多关于此的信息/见解,请添加答案!

这是另一个更近期的SO问题的链接 - 希望这将有助于人们找到他们正在寻找的答案.

Der*_*ior 23

在第一种情况下,DNS预取将无助于您在每个页面上加载相同的资源.资源应缓存在后续请求中,因此预取dns记录不会产生任何影响.

在第二种情况下,简单地移除和添加link元素不足以测试预取的效果.即使没有link元素,浏览器也会扫描href以确定要预取的域 - 链接标记是为了告诉它除了浏览器会找到的域之外还预取域 - 这在你知道链接的情况下很有用一个域最终被重定向到另一个域.

查看预取标记效果的一种方法是设置几个站点.www.example.com/index.html将包含指向www.anotherexample.com的链接,该链接将重定向到www.athirdsite.com.如果您在使用和不使用指向www.athirdsite.com的链接标记的情况下测试此配置,您可能会发现链接标记更快.如果使用的名称服务器具有高延迟,则您更有可能看到此效果.

最后,我只是让浏览器做它的事情,除非你有一个非常特别的理由指示它另外做其他事情.