`
阿尔萨斯
  • 浏览: 4185136 次
社区版块
存档分类
最新评论

Html标签嵌套对展示性能的影响

 
阅读更多

一个简单问题:如下2种Html写法,那个加载速度快?

<!-- 写法1 -->
<div>
<div>内容代码2<!--</span-->div>
<div>内容代码3<!--</span-->div>
<div>内容代码4<!--</span-->div>
<div>内容代码5<!--</span-->div>
<div>内容代码6<!--</span-->div>
<div>内容代码7<!--</span-->div>
<div>内容代码8<!--</span-->div>
<div>内容代码9<!--</span-->div>
<div>内容代码10<!--</span-->div>
<!--</span-->div>

<!-- 写法2 -->
<div>内容代码2<!--</span-->div>
<div>内容代码3<!--</span-->div>
<div>内容代码4<!--</span-->div>
<div>内容代码5<!--</span-->div>
<div>内容代码6<!--</span-->div>
<div>内容代码7<!--</span-->div>
<div>内容代码8<!--</span-->div>
<div>内容代码9<!--</span-->div>
<div>内容代码10<!--</span-->div>

我的答案,写法2。当然,如果只是上面的写法,实际上这两种写法对性能的差别,可以忽略不计。

但是如果,上图的内容代码区域如果嵌入了一些不可控的因素,比如:外站的一些脚本出现在<div>内容代码7<!--</span-->div>中。写法1需要所有都加载完成才可以正常显示,写法2的内容2-6 不受这个影响。

更具体的来说:浏览器解析Html的规则必然是:

  • 当服务器向浏览器输出多少,浏览器就会解释多少,浏览器不可能解析没有给它的内容。
  • 源文件Body区域的每个Html标签,如果浏览器找不到这个标签的结束标志(一些html标签没有结束标志,但是需要浏览器去分析结束位置)。这个标签对应的内容,浏览器就难以正常显示。
  • 源文件Body区域的多个标签嵌套,需要所有被嵌套标签都加载完成,才能正常显示,这时候加载顺序是倒着的。举例:
    1
    2
    3
    这段源代码会先显示3,然后2, 最后1。因为加载div1时并没有找到它的结束标签
    ,于是它不加载继续解析源文件,在找到div2时,和上面一样也没有找到结束位置不做加载。然后是找到div3,div3有结束标签。 浏览器开始加载div3,之后,找到div2的结束标签,加载div2,以次类推,所以这时理论加载顺序为: 3 2 1 。
  • 如 果浏览器的加载页面元素只是上面这样的工作原理,我们看到的很多页面的效果就是整个页面所有都加载完成才能显示出来。其实浏览器还有由一个特性,它可以去 预测没有加载的内容。有些浏览器在打开一些网页的规程中,会把一些元素移位,最后才恢复正常,一部分原因就是这个事先预测在起作用。

再回到最初的问题:

一般美工在作页面时,会喜欢写法1的嵌套Html。如果一个夏姆,对用户体验要求高,同时预测到可能会在一些地方嵌入广告脚本会影响到页面显示,我会要求美工用方法2的方式来书写源文件,以保证用户体验。页面的设计,减少嵌套的层次,对页面的加载会好处多多的。

最后,我家儿子刚过一周岁,文章的最后祝福一下我家小宝贝。

参考资料:

嵌套后的显示速度问题
http://zhidao.baidu.com/question/7892633.html

关于DIV和表格的速度评论
http://x.discuz.net/viewthread-469261.html

把所有东西都放在一个大DIV里,显示速度问题。
http://zhidao.baidu.com/question/52404898.html

整个网页面用一个DIV包含起来好不好
http://zhidao.baidu.com/question/67452079.html

分享到:
评论

相关推荐

    高速UBB标签转换引擎

    1. 性能极高,对全文只扫描一遍,且和UBB标签的种类数量无关,因此可以任意添加新的UBB标签而不必担心性能会下降 2. 容错性非常好,比如对于错误UBB语法"[b]你[i]好[/b]啊[/i]",可以选择两种容错模式“忽略(IGNORE...

    前端css+html+布局笔记

    HTML是采用纯文本的形式的编写,采用HTML标签来标识出页面中的不同部分 标签 成对出现 &lt;标签名&gt;标签名&gt; 自结束标签 &lt;标签名 /&gt; 属性 通过属性可以设置标签的效果 属性需要定义在开始标签中或这自结束标签中 ...

    JSTL详细标签库介绍

    &lt;BR&gt;3、 尽管可以使用异常处理来代替错误处理,但会降低性能&lt;BR&gt;4、 异常处理会占用程序的格外执行时间&lt;BR&gt;5、 异常处理能够提高程序的容错性&lt;BR&gt;6、 程序员使用JAVA标准的异常处理功能来代替他们的专用方法,可以...

    8CMS企业网站管理系统 1.0.rar

    是中小型企业能够以最低的成本、最少的人力投入、在最短的时间内架设一个功能齐全、性能优异、SEO架构合理的网站平台工具。 功能特色: 企业展示应用: 多语种 可创建无限语种,如:中文、英文、日本语 自...

    HTMLawed:高度可自定义PHP脚本,用于清理使(X)HTML免受XSS攻击的侵害,因此用户可以编辑HTML,而不会使您的网站受到恶意破坏

    它确保HTML标签是平衡且正确嵌套的标签,中和可用于跨站点脚本(XSS)攻击的代码,限制允许HTML元素,属性或URL协议,整理代码,等等。 因此,它可以在卫生环境中替代 。这个仓库是... ...衍生产品,密切跟踪并且...

    www.zwdyw.com站源码代码

    独创的HTML形式的标签机制,使得做模板非常简单,只要你会HTML就可以制作精美的模板皮肤。程序模板多达100余套,全部免费、任意下载使用,全站DIV+CSS模板标签设计。自定义模板系统满足你个性化的需求,使你的网站...

    基于jQuery的控件源码

    每一项又是div,嵌套一个nobr(可用div代替不过要额外写个class)的标签,里面是图标和span包裹的位置内容 2、日期选择 日期控件确定HTML其实还是比较简单,因为明摆着是列表的数据格式,当然主要是采用table了 ...

    MFEXECOM论坛开源

    作者曾经用过一段时间的 bootstrap,发现命名比较冗余,标签嵌套也比较深,所谓的响应式、流式布局坑也蛮多(主要是后期维护麻烦) 在设计的领域,对于画布的大小,宽高留白是非常有讲究的,想一套代码适应不同尺寸...

    简洁优雅的基于组件的 UI 库

    语法是明确的,嵌套是语言固有的,属性提供了一种为自定义标签提供选项的干净方式。 高性能且可预测 绝对尽可能少的 DOM 更新和回流。 快速表达式绑定而不是虚拟 DOM 内存性能问题和缺点。 数据流的一种方式:更新和...

    jquery插件使用方法大全

    ·attribute(改进了.attr()的性能)、jQuery()核心函数、CSS(.css()性能有两倍提升)、特效和事件、DOM操作等也有显著改进 1.5 美国时间1月31日John Resig在jQuery官方博客发表文章,宣布jQuery 1.5正式版已经...

    超实用的jQuery代码段

    2.10 如何从元素中除去HTML标签 2.11 如何限制文本域中字符的个数 2.12 如何选中页面上的所有复选框 2.13 禁用表单的回车键提交 2.14 禁用右键单击上下文菜单 2.15 IE下禁用文本选择功能 2.16 输入框获取焦点时文本...

    itertree:itertree python包

    树可以按不同级别进行结构(嵌套树:父级-&gt;子级-&gt;子子级-&gt;子-子级...。) 识别标签可以是字符串或任何可哈希对象 识别标签不能唯一(枚举相同的标签并在标签家族中收集) 保持添加子项的顺序 数据存储在受保护的...

    xml入门教程/xml入门教程

    4)层层嵌套,每一对标签总是出于另一对标签的内或和其处于同一层,不能交叉(根元素chuw) 5)大小写敏感,起始标签和结束标签的名字要一致 6)属性值必须用引号引起来 7)注意特殊字符,使用时需要使用转义字符。 ...

    DjCms电影管理系统 3.0 build 20110808

    征对搜索引擎特征制作的多种生成路径方式。智能的附带删除机制,当删除数据时将自动删除所有相关的图片\html文件\目录等, 不浪费你每字节的空间,操作更人性化 07.广告管理系统 先进的广告管理系统打破传统模式,...

    超级有影响力霸气的Java面试题大全文档

    超级有影响力的Java面试题大全文档 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。...

    基于jQuery的控件

    每一项又是div,嵌套一个nobr(可用div代替不过要额外写个class)的标签,里面是图标和span包裹的位置内容 2、日期选择 日期控件确定HTML其实还是比较简单,因为明摆着是列表的数据格式,当然主要是采用table了 两个...

    精通AngularJS part1

    在HTML标签中使用指令215 82指令的编译生命周期215 83为指令编写单元测试217 84定义指令218 85使用指令修改按钮样式219 编写一个按钮指令220 86理解AngularJS的组件指令222 编写一个分页指令222 为分页指令...

    DJCMS影视程序(开源) v3.0 build 20110808

    31.新增大量标签、具体参考3.0版程序包中的标签文档手册 32.优化数据库,支持百万数据级,程序彻底开源 2011-08-08更新记录 修复 资源采集. 修复 不支持linux问题,现在已经支持国外的linux服务器了. 修复 目前已知BUG ...

    ngx-line-truncation:角线截断解决方案。 通过给定的行号截断文本块,并在末尾添加省略号

    特征为Angular平台量身定做聪明,只需声明要截断的行数,无需提供max-height,line-height 与嵌套DOM元素一起使用支持富文本,保持原始HTML元素标签和样式快速而强大自定义省略号字符重新调整窗口大小动态内容截断...

Global site tag (gtag.js) - Google Analytics