因此,假设我们为 @ 设置了 A 记录和 AAAA 记录,并且为 www 设置了指向 @ 的 CNAME。
当新访问者访问 example.com 并且 Web 服务器向 www.example.com 发送 301 永久重定向时,即使它已经知道@的位置,在 CNAME 之后是否仍需要额外的 DNS 查找?
如果是这样,为什么许多公司使用 CNAME 方法而不是额外的 A 和 AAAA对于 www?
最后我想说的是,我已经在整个互联网上搜索了这个问题的答案。
答案1
回答您的第一个问题,当使用 CNAME 将 www.@ 指向区域中时,将执行初始 CNAME 查找,然后对 CNAME 指示的 A 记录进行第二次查找。如果客户端之前未访问过此记录,则通常会缓存此响应,并且在查找的记录的 TTL 内对此 A 记录的任何进一步查找都将从缓存中得到响应。
许多公司使用 CNAME 记录,其主域的多个子域指向同一服务器。如上所述(mulaz 的回复),当服务器 IP 或位置发生变化时,只需要更新一条记录,而不是几百条记录(可能如此),这样既节省了时间,又简化了配置。
答案2
如果您有许多子域名指向一台服务器,则管理起来会更容易,因为当服务器 IP 发生变化时,您只需更改一个 A 记录,然后 CNAMES 就会全部指向新的 IP - 无需单独设置每个别名的 IP。
否则,使用哪种方法完全由您自己选择。
答案3
对于将 www CNAME 到同一域名的 @ 的情况,需要进行额外的查找绝不必要。当被要求提供 www 时,权威服务器将发送 CNAME 记录和 CNAME 目标(在您的例子中为 @)的 A 记录。对于指向另一个主机名的任何 CNAME 也是如此同一区域内。
仅当 CNAME 指向另一个域时才需要进行额外查找。
使用 CNAME 是因为它更易于管理 - 当地址发生变化时,仅需更改一个主机名。
恕我直言,从技术上讲,将 CNAME 指向 @ 并不完全正确,因为 @ 通常包含其他记录,例如 MX。如果您将 www CNAME 指向 @,则表示 A 记录,但所有其他记录也将显示为 www 的现有记录。因此,有人可能会认为他可以发送电子邮件至[电子邮件保护], 例如。