我有一个网站,有一个外国iframe。有多个第三方脚本运行在这个外国的iframe中。
我知道,如果我要从主窗口prefetch这些脚本-- iframe将需要重新加载这些源(就像prefetch在不同的域中所做的那样)。
如果我在主窗口中为第三方脚本添加或preconnect资源提示,那么在iframe中加载这些脚本的性能会得到改善,这是什么原因呢?就因为我把剧本热身了吗?
发布于 2019-12-23 11:22:17
一些浏览器出于隐私原因实现了双键HTTP缓存,以防止跟踪。这意味着如果domain1从CDN加载jQuery,然后domain2从同一个域加载相同的jQuery资源,那么它将再次被下载,而不是从HTTP重用相同的副本。
Safari已经做了一段时间了,Chrome最近宣布他们也会这样做。也这么做了。
这意味着您不能在外部域中使用prefetch或preload资源和脚本。
dns-prefetch和preconnect没有这样的隐私含义(就目前而言--关于预连接的潜在变化,请参见安迪的回答如下 )。因此,它们可以通过预先加载一些获得这些脚本的工作来改进iframes中的性能(尽管应该注意,浏览器可能并不总是使用相同的连接,这取决于浏览器。可能会影响preconnect的使用)。
发布于 2020-01-07 17:46:35
很可能连接池也会变成双键-https://github.com/whatwg/fetch/issues/917
在这个场景中,dns-prefetch将是可以的,但是对于在iframe中引用的资源来说,来自顶部框架原点的preconnect将不会作为顶部框架原点与iframe原点不同。
iframe的内容仍然应该能够使用链接元素或HTTP报头进行自己的预连接。
(添加为新答案,因为注释不能有换行符)
https://stackoverflow.com/questions/59446485
复制相似问题