子域的 DNS 预取

DNS prefetching of subdomains

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

例如当我有 <link rel="dns-prefetch" href="//example.com"> 时,我还需要为 //static.example.com 添加一个标签吗?

我做了以下测试:首先创建了简单的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 private window 中打开了这个页面。我在我的 dns 名称服务器的日志中观察到只请求 "example.com" 而没有请求子域。

然后我把页面改成如下:

<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 private 中打开此页面 window。现在我观察到我们对域及其子域发出的 dns 请求。

所以我可以得出结论,是的 - 您必须单独预取子域。

您必须分别预取每个子域。

这就是 DNS 的工作原理。你问名字,它回答,它对"subdomains"一无所知,它只是一个名字。

nslookup google.com 仅给出 google.com 的答案,没有子域。

nslookup www.google.com 只给出 www.google.com,没有顶级域。