`

为什么要少用Iframe

 
阅读更多

 iframes 提供了一个简单的方式把一个网站的内容嵌入到另一个网站中。但我们需要慎重的使用iframe。iframe的创建比其它包括scripts和css的 DOM 元素的创建慢了 1-2 个数量级。

 

  使用 iframe 的页面一般不会包含太多 iframe,所以创建 DOM 节点所花费的时间不会占很大的比重。但带来一些其它的问题:onload 事件以及连接池(connection pool)。

 

  Iframes 阻塞页面加载

 

  及时触发 window 的 onload 事件是非常重要的。onload 事件触发使浏览器的 “忙” 指示器停止,告诉用户当前网页已经加载完毕。当 onload 事件加载延迟后,它给用户的感觉就是这个网页非常慢。

 

  window 的 onload 事件需要在所有 iframe 加载完毕后(包含里面的元素)才会触发。在 Safari 和 Chrome 里,通过 JavaScript 动态设置 iframe 的 SRC 可以避免这种阻塞情况。

 

  唯一的连接池

 

  浏览器只能开少量的连接到web服务器。比较老的浏览器,包含 Internet Explorer 6 & 7 和 Firefox 2,只能对一个域名(hostname)同时打开两个连接。这个数量的限制在新版本的浏览器中有所提高。Safari 3+ 和 Opera 9+ 可同时对一个域名打开 4 个连接,Chrome 1+, IE 8 以及 Firefox 3 可以同时打开 6 个。你可以通过这篇文章查看具体的数据表:Roundup on Parallel Connections.

 

  有人可能希望 iframe 会有自己独立的连接池,但不是这样的。绝大部分浏览器,主页面和其中的 iframe 是共享这些连接的。这意味着 iframe 在加载资源时可能用光了所有的可用连接,从而阻塞了主页面资源的加载。如果 iframe 中的内容比主页面的内容更重要,这当然是很好的。但通常情况下,iframe 里的内容是没有主页面的内容重要的。这时 iframe 中用光了可用的连接就是不值得的了。一种解决办法是,在主页面上重要的元素加载完毕后,再动态设置 iframe 的 SRC。

 

  美国前 10 大网站都使用了 iframe。大部分情况下,他们用它来加载广告。这是可以理解的,也是一种符合逻辑的解决方案,用一种简单的办法来加载广告服务。但请记住,iframe 会给你的页面性能带来冲击。只要可能,不要使用 iframe。当确实需要时,谨慎的使用他们。

 

 原文链接:http://www.williamlong.info/archives/3136.html

 英文链接:http://www.stevesouders.com/blog/2009/06/03/using-iframes-sparingly/

分享到:
评论

相关推荐

    为什么要少用Iframe的几个原因分析

    与`scripts`和`CSS`等DOM元素相比,`Iframe`的创建过程要慢1-2个数量级。这意味着在网页加载过程中,`Iframe`会占用更多的时间,可能导致整体页面加载速度下降。虽然单个`Iframe`的创建时间可能微不足道,但如果网页...

    comet-iframe.rar

    2. **创建IFrame HTML**:在HTML页面中插入IFrame元素,并指定其src属性为PHPComet的处理脚本URL。这将允许IFrame与服务器建立长连接。 3. **编写PHPComet脚本**:编写处理IFrame请求的PHP脚本,该脚本需要与...

    通过JavaScript+IFRAME实现页面分屏加载

    分屏加载的核心思想是将页面拆分成若干个部分(如头部、主体、底部等),然后用IFRAME分别加载这些部分。这样,用户可以先看到页面的基本结构,而其他部分则在后台异步加载,提升了页面的响应速度。 ### 3. ...

    jquery iframe tab实例(5个不同tab实例)

    在网页开发中,jQuery是一个非常流行的...记得每个实例完成后都要进行充分的测试,确保在各种浏览器和设备上都能正常工作。通过这些练习,你将能够创建出用户友好且功能丰富的iframe tab系统,满足各种复杂的需求。

    网站繁体和简体的切换,解决iframe

    在构建多语言网站时,尤其是面对中文用户群体,提供繁体和简体的切换功能是必不可少的。这有助于满足不同地区用户的阅读习惯,提升用户体验。本文将深入探讨如何实现网站的繁体与简体切换,并重点解决在使用iframe时...

    用CSS构建iframe效果代码

    "用CSS构建iframe效果代码" 在Web开发中,iframe是非常常见的元素,它可以将一个独立的HTML文档嵌入到另一个HTML文档中,从而实现页面的嵌套。但是,iframe也存在一些缺陷,例如增加了页面的加载时间、影响搜索引擎...

    基于Jquery的iframe遮罩层插件,可以遮挡flash。此插件在“爱乐网址收藏夹”中使用

    jQuery的API设计使得开发者能够用更少的代码实现更多的功能,提高了开发效率。 接着,我们来探讨iframe。IFrame(Inline Frame)是HTML的一个元素,允许在一个HTML文档中嵌入另一个HTML文档。它常用于在页面中展示...

    frame,iframe,frameset区别pdf

    而iframe的src属性同样指定了要加载的页面地址,另外,其width和height属性可以定义iframe的尺寸,scrolling属性可以控制是否显示滚动条等。 **使用上的注意事项** 尽管frameset和frame标签能够实现复杂的页面布局...

    解决在iframe页面里使用了DD_belatedPNG后显示空白的bug

    6. **更新浏览器**:鼓励用户升级到较新版本的浏览器,以获得更好的PNG透明度支持和更少的兼容性问题。 7. **备用方案**:对于仍然遇到问题的旧版IE用户,可以提供一个降级的非透明PNG图像或使用其他CSS技巧,如`...

    详解iframe与frame的区别

    **二、为什么少用iframe** 1. **iframe加载性能问题** - iframe的创建速度相对较慢,可能会影响整个页面的加载时间。 - iframe可能会阻塞页面的onload事件,延迟页面完全加载的感知,给用户造成页面缓慢的印象。 ...

    深入剖析HTML5 内联框架iFrame

    由于现在frame和frameset很少使用,已经过时了,已经被div+CSS代替了,所以,这里只是举例说明一下,当下还在使用的内联框架iFrame 所谓的iFrame内联框架,我的理解就是在网页内部嵌套一个网页,并且可以一级一级地...

    教你用jquery实现iframe自适应高度

    iframe因为能和网页无缝的结合从而不刷新页面的情况下更新页面的部分数据成为可能,可是 iframe的大小却不像层那样可以“伸缩自如”,所以带来了使用上的麻烦,给iframe设置高度的时候多了也不好,少了更是不行,...

    jQuery实现的简单网页打印功能插件printPage(通过隐藏的iframe实现).zip

    这个插件通过隐藏的iframe来实现打印功能,避免了直接打印整个页面可能带来的不必要的元素和样式干扰。 首先,让我们了解下jQuery的基本概念。jQuery是由John Resig创建的一个轻量级、高性能的JavaScript库,它的...

    非常实用的bootStrap-addTabs框架/ifame后台管理框架/ERP系统框架

    利用bootStrap开发的Tabs+iframe框架 非常实用,网上很少,不可多得的web网页框架资源

    js 监控iframe URL的变化实例代码

    所以监控iframe的url变化就是必须要解决的问题了。 第一印象的解决方案是通过setInterval轮询监控,貌似不太理想了,而且有延迟。 千般搜索,终于找到了好的方法,可以通过H5新增的MutationObserver来解决,配合...

    JQuery自适应IFrame高度(支持嵌套 兼容IE,ff,safafi,chrome)

    此外,作者提到在某些情况下,可能需要设定一个最小高度,以防内容过少导致IFrame高度过小。这可以通过条件语句来实现,如下所示: ```javascript <!-- $(function(){ $("#workArea").load(function(){ var ...

    js中访问html中iframe的文档对象的代码[IE6,IE7,IE8,FF]

    针对如何用 JavaScript 访问和操作 iframe 中的文档对象,特别是针对不同时期的 Internet Explorer 和 Firefox 浏览器,存在一些特定的技巧和差异。 首先,根据 W3C 的标准,JavaScript 中可以通过 DOM 对象的 ...

    JS实现兼容火狐及IE iframe onload属性的遮罩层隐藏及显示效果

    需要特别指出的是,随着浏览器和Web标准的不断发展,现代的Web开发已经较少依赖于iframe元素。随着HTML5和CSS3的发展,有了更多优雅的替代方案,比如可以使用JavaScript的Ajax调用或者window.fetch API来异步加载...

Global site tag (gtag.js) - Google Analytics