Web 性能 - 资源提示 - 不使用 preconnect/dns-prefetch 的 href 内的协议是否有任何负面影响?
Web Performance - Resources Hints - is there any negative impact to not use the protocol inside the href of a preconnect/dns-prefetch?
我正在尝试尽可能正确地使用浏览器资源提示 (https://w3c.github.io/resource-hints/)。
我访问了几个大型网站,其中大多数都指定了 http/https 协议,如下所示:
<link rel="preconnect" href="https://cdn.krxd.net">
<link rel="preconnect" href="https://beacon.krxd.net">
<link rel="preconnect" href="https://ads-api.ft.com">
<link rel="preconnect" href="https://www.googletagservices.com">
<link rel="preconnect" href="https://partner.googleadservices.com">
<link rel="preconnect" href="https://securepubads.g.doubleclick.net">
<link rel="preconnect" href="https://tpc.googlesyndication.com">
<link rel="preconnect" href="https://imasdk.googleapis.com">
<link rel="preconnect" href="https://z.moatads.com">
但我发现 Shopify 没有在他们引用的 href 中指定协议
<link rel="dns-prefetch preconnect" href="//cdn.shopify.com" />
<link rel="dns-prefetch preconnect" href="//www.google-analytics.com" />
<link rel="dns-prefetch preconnect" href="//stats.g.doubleclick.net" />
<link rel="dns-prefetch preconnect" href="//bat.bing.com" />
<link rel="dns-prefetch preconnect" href="//bat.r.msn.com" />
确实basic W3C spec也有没有协议的例子。
我想知道如果不指定它是 http 还是 https 可以有一个 impact/cost 因为浏览器将必须获取更多信息(一个用于 http,一个用于 https),例如 2 个 dns 信息?
I wondered if not specifying if it's either http or https could have a impact/cost as the browser will have to fetch more information (one for http, one for https) like 2 dns information ?
不,浏览器不必发出两个请求。
这称为 protocol relative URI - 浏览器将使用请求嵌入页面的协议将其完成为完整的、绝对的。
如果您请求使用 https://
嵌入的页面 - 那么 //foo.bar/
将变为 https://foo.bar/
;如果你只使用 http://
,那么它将变成 http://foo.bar/
这是一种允许站点作者以“协议不可知”的方式编写代码的方法。您可以使用它部署一个站点来引用外部资源,以便可以通过 HTTP 或 HTTPS 访问它,而无需修改所有这些引用。它还有助于防止将网站从 HTTP 转移到 HTTPS 时可能出现的问题。如果在这种情况下使用 http://...
引用外部资源,浏览器将阻止它们。使用这种技术,它会自动请求HTTPS版本,无需修改代码。
我正在尝试尽可能正确地使用浏览器资源提示 (https://w3c.github.io/resource-hints/)。
我访问了几个大型网站,其中大多数都指定了 http/https 协议,如下所示:
<link rel="preconnect" href="https://cdn.krxd.net">
<link rel="preconnect" href="https://beacon.krxd.net">
<link rel="preconnect" href="https://ads-api.ft.com">
<link rel="preconnect" href="https://www.googletagservices.com">
<link rel="preconnect" href="https://partner.googleadservices.com">
<link rel="preconnect" href="https://securepubads.g.doubleclick.net">
<link rel="preconnect" href="https://tpc.googlesyndication.com">
<link rel="preconnect" href="https://imasdk.googleapis.com">
<link rel="preconnect" href="https://z.moatads.com">
但我发现 Shopify 没有在他们引用的 href 中指定协议
<link rel="dns-prefetch preconnect" href="//cdn.shopify.com" />
<link rel="dns-prefetch preconnect" href="//www.google-analytics.com" />
<link rel="dns-prefetch preconnect" href="//stats.g.doubleclick.net" />
<link rel="dns-prefetch preconnect" href="//bat.bing.com" />
<link rel="dns-prefetch preconnect" href="//bat.r.msn.com" />
确实basic W3C spec也有没有协议的例子。
我想知道如果不指定它是 http 还是 https 可以有一个 impact/cost 因为浏览器将必须获取更多信息(一个用于 http,一个用于 https),例如 2 个 dns 信息?
I wondered if not specifying if it's either http or https could have a impact/cost as the browser will have to fetch more information (one for http, one for https) like 2 dns information ?
不,浏览器不必发出两个请求。
这称为 protocol relative URI - 浏览器将使用请求嵌入页面的协议将其完成为完整的、绝对的。
如果您请求使用 https://
嵌入的页面 - 那么 //foo.bar/
将变为 https://foo.bar/
;如果你只使用 http://
,那么它将变成 http://foo.bar/
这是一种允许站点作者以“协议不可知”的方式编写代码的方法。您可以使用它部署一个站点来引用外部资源,以便可以通过 HTTP 或 HTTPS 访问它,而无需修改所有这些引用。它还有助于防止将网站从 HTTP 转移到 HTTPS 时可能出现的问题。如果在这种情况下使用 http://...
引用外部资源,浏览器将阻止它们。使用这种技术,它会自动请求HTTPS版本,无需修改代码。