DNS预取子域名

时间:2016-04-28 16:32:58

标签: html performance dns prefetch

我是否必须单独预取子域?

E.g。当我<link rel="dns-prefetch" href="//example.com">时,我还需要//static.example.com的其他标签吗?

2 个答案:

答案 0 :(得分:14)

我做了以下测试:首先创建简单的HTML页面

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <link rel="dns-prefetch" href="//example.com/">     
  </head>
  <body>
    <a href="http://example.com">Test link</a>
    <a href="http://sub.example.com">Test link 2</a>
  </body>
</html>

对于我拥有dns名称服务器的域和子域。然后我清理了dns缓存并在firefox私有窗口中打开了这个页面。我在我的dns名称服务器的日志中观察到只请求&#34; example.com&#34;已经完成,没有子域请求。

然后我按如下方式更改了页面:

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <link rel="dns-prefetch" href="//example.com/">     
    <link rel="dns-prefetch" href="//sub.example.com/">
  </head>
  <body>
    <a href="http://example.com">Test link</a>
    <a href="http://sub.example.com">Test link 2</a>
  </body>
</html>

再次清除dns缓存并在firefox私有窗口中打开此页面。现在我观察到dns请求我们为域和它的子域做了。

所以我可以得出结论是 - 你必须单独预取子域名。

答案 1 :(得分:5)

您必须单独预取每个子域名。

DNS的工作原理。你要求提供姓名,它会回复,它对&#34; subdomains&#34;一无所知。它只是一个名字。

nslookup google.com只为google.com提供答案,没有子域名。

nslookup www.google.com仅提供www.google.com,不提供顶级域名。