广告加载使用iframe好还是不好?

9
根据雅虎的"网站加速最佳实践", 使用iframe的优点是:
  • 有助于加载缓慢的第三方内容,如徽章和广告
  • 并行下载脚本
但缺点是:
  • 即使为空也会造成成本
  • 阻塞页面的onload事件
我想使用一个iframe来加载广告,使用了这个网站上提到的技术:http://meanderingpassage.com/2007/08/15/keeping-javascript-widgets-from-controlling-your-blog/ 使用这种技术是否意味着一旦iframe请求的html内容返回到客户端,它将加载广告脚本,可能会阻塞页面的其余渲染和下载?还是iframe请求会与文档的其余部分同时处理,以并行方式进行呢?
然而,我不是在讨论广告是好还是坏的哲学问题。

它是如何阻止页面加载的?这只是因为实现而昂贵。责怪浏览器开发人员,而不是 iframe 的原始设计。 - Pyrolistical
2
@Pyro 我认为他并不关心责备任何人,只是想要一个好的网站。 - Frank Schwieterman
我在我的网站上发布Google广告已经有一段时间了,这些广告依赖于JS生成的iframe,并且没有发现任何问题。通常情况下(但并非总是如此),我的内容会在广告之前加载(当广告获胜时,是因为它们只是文本而我的页面很长^^')。 - Edurne Pascual
3个回答

9
我不太确定为什么Yahoo列表上说“在页面onload时阻止”。IFrame加载与父页面独立,特别是当iframe内容与主页面不在同一域时。 “阻止页面onload”似乎与优点相矛盾,这两个优点都是由于iframe加载的并发性。现在,如果您有一个iframe正在从与主页相同的域名加载某些内容,则可能会超出浏览器每个域的连接限制,从而影响主页面下载其内容的速度。但是,如果iframe URL是不同的域,则应该获得其自己的每个域的连接限制。
Iframe的最大优点是安全隔离。当您将第三方脚本加载到iframe中时,您不必担心第三方脚本接管您的页面并在各处涂鸦,或从您的脚本变量中窃取用户数据。
Iframe的最大缺点也是安全隔离。保护您免受第三方攻击的砖墙也使得在同一网页上进行通信/共享信息变得非常困难。

1
+1 用于上下文保护,但请注意,为了确保安全,您需要将 iframe 放在不同的主机名上。否则,您仍然邀请广告网络和任何他们信任的人跨站点脚本进入您的安全上下文;如果他们愿意,他们可以控制用户与任何页面的交互,以执行该用户被授权执行的任何操作。 - bobince
“Blocks page onload” 意思是 iframe 阻止 window.onload 事件提前触发,但它们当然不会阻止页面加载过程。 - Dmitry Pashkevich

8

内部iframe的渲染与外部页面并行处理。iframe内部的任何javascript都只会阻止iframe内部内容的加载。

编辑:我刚刚注意到我回答了你之前关于这个主题的问题,并且正如在那里解释的那样,可以在javascript中随时触发iframe的加载(例如在页面的其余部分加载后)。


@tloflin 谢谢。这就是我想要理解的内容。 - Cedar Jensen
我想知道在2020年使用iframe懒加载后,这个问题的答案是否有所改变? - 42droids Ltd

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接