dns-prefetching 是否会对性能产生负面影响?
Does dns-prefetching ever have negative performance implications?
我们的站点从各种第一方和第三方获取资源,如下所示:
<link rel="dns-prefetch" href="https://connect.facebook.net/">
其中一些 URL 不会在页面加载时立即使用。出于某种原因不预取 DNS 是否值得?建议只预取您可能使用的所有内容吗?
如果您使用托管 DNS,一个考虑因素是您生成的查找次数。如果您付费 per-lookup,您可能不想生成一堆 dns 查询,除非您真的希望用户向他们发出真正的请求。
我们在页脚中的网站 links 的 Stack Overflow 上遇到了这个问题。这生成了类似 1.8 million dns requests per hour 的内容,仅用于 dns 预取。
这会导致相当大的 DNS 账单,因此我们将 x-dns-prefetch-control:off
添加到我们的默认响应 headers 以避免这些。
另一个问题是隐私。如果您有 user-generated links,某个有创意的人可以创建唯一的主机名并使用它们来跟踪看到 link 的人,而不需要他们实际点击它。如果您在 https 页面(chrome does not prefetch on by default)上预取 links,预取可能会向窃听者泄露有关站点之间关系的一些信息。
我们的站点从各种第一方和第三方获取资源,如下所示:
<link rel="dns-prefetch" href="https://connect.facebook.net/">
其中一些 URL 不会在页面加载时立即使用。出于某种原因不预取 DNS 是否值得?建议只预取您可能使用的所有内容吗?
如果您使用托管 DNS,一个考虑因素是您生成的查找次数。如果您付费 per-lookup,您可能不想生成一堆 dns 查询,除非您真的希望用户向他们发出真正的请求。
我们在页脚中的网站 links 的 Stack Overflow 上遇到了这个问题。这生成了类似 1.8 million dns requests per hour 的内容,仅用于 dns 预取。
这会导致相当大的 DNS 账单,因此我们将 x-dns-prefetch-control:off
添加到我们的默认响应 headers 以避免这些。
另一个问题是隐私。如果您有 user-generated links,某个有创意的人可以创建唯一的主机名并使用它们来跟踪看到 link 的人,而不需要他们实际点击它。如果您在 https 页面(chrome does not prefetch on by default)上预取 links,预取可能会向窃听者泄露有关站点之间关系的一些信息。