DNS预取/预先parsing主机名 – 如何有效?
我一直在阅读这个如何工作,但正在努力去理解它。
从我可以告诉如果我在我的网页的头部设置<link rel="dns-prefetch" href="//ajax.googleapis.com" />
我应该看到一个更快的请求完成是我引用这个任何资产域。 [参考文献]
现在有两个问题目前困扰着我:
1)这是否只有帮助未来的页面请求
我的意思是,如果我使用Google的CDN 在我网站的每个页面上获取jQuery ,都会在 <link />
之上加上任何区别? 或者只有在我的主页上没有引用CDN,而是在所有其他页面上引用CDN的时候,它才有用处? 在第二个选项中,用户将打开主页,在我的内容页面上parsing并caching准备好下载的DNS主机。
2)我如何testing这个的有效性?
我想,如果我知道这个答案,我会更好地理解问题1.我试图使用Firebug和Chrome开发人员工具,并观看networking和资源面板,但我看不出有什么重大区别。 我能看到的唯一趋势是,如果有的话,当我使用<link />
时,完成我的请求需要更长的时间!
我已经阅读了关于MDN和Chromium博客的文档(都是旧的!),但我仍然没有得到它。
任何帮助将不胜感激 – 谢谢!
更新 – 22/01/2013
只是阅读更多的这个问题,并认为我应该包括这个问题的人的链接。 csswizardry写了一篇很好的文章,介绍了这个问题,并且链接到了perfplanet的更多的研究 。 如果有人对此有更多的信息/见解,请添加答案!
这是另一个更近期的问题的链接 – 希望这将帮助人们find他们正在寻找的答案。
在第一种情况下,由于您正在每个页面上加载相同的资源,因此DNS预提取将无济于事。 资源应该被caching在随后的请求上,所以预取dnslogging不会有任何影响。
在第二种情况下,仅仅删除和添加link
元素不足以testing预取的效果。 即使没有链接元素,浏览器也会扫描hrefs以确定要预取哪些域 – 链接标记是为了告诉它除了浏览器会发现的域之外预取一个域 – 在知道链接的情况下到一个域最终redirect到另一个域。
查看预取标签效果的一种方法是设置几个站点。 http://www.example.com/index.html将包含指向www.anotherexample.com的链接,然后该链接将redirect到www.athirdsite.com。; 如果要testing这个configuration是否带有指向www.athirdsite.com的链接标签,您可能会发现链接标签的速度更快。 如果正在使用的名称服务器具有较高的延迟,则更有可能看到这种效果。
最后,我只是让浏览器做它的事情,除非你有一个特别的理由指示它做另外的事情。