今天是:
首 页信息查询网站SEO查询工具CSS编辑器建站素材
网海拾贝,电脑资讯,电脑快报,it资讯,网站建设资讯,教程基地
软件新闻
操作系统
Vista Winxp Win2003 Linux Windows综合
工具软件
系统工具 媒体工具 网络工具 杀毒软件 聊天
软件开发
C教程 C++ Java C# ASP.NET JSP PHP
数据库
Oracle MySQL DB2 SQL Server Sybase
安全
网络 病毒
办公应用
Word Excel Powerpoint Outlook 其他
平面设计
Photoshop Fireworks Coreldraw Flash Illustrator 3dsmax
网站运营
网站运营 网站优化 网站策划 策划书下载 建站心得 站长故事 网站盈利 网页制作 网页特效 建站素材 免费资源 QQ频道
  当前位置:首 页 >> 网页制作 >> CSS教程 >> 网页CSS背景图片使用的测试结果

网页CSS背景图片使用的测试结果

  发布于2008-08-20 08:42 来源:网页教学网

网页CSS背景图片使用的测试结果

  这篇文章主要讲了CSS对背景图片渲染效率的一些经验和研究,在webjx.com中,还有着类似CSS效率的相关文章。

  树型结构竖线用样式表(背景图)来实现,样式表背景图片只需要加载一次,而现在这个模式(用多个<img>)图片虽然有缓存机制,但还是有可以每张小图片都请求一次服务器的,所以我想用样式表来实现有多么的好呀,代码又精简,结构又清晰,效果又酷,但是结果我将近一个星期的测试,我这种设想彻底失败,原因就是样式表的渲染效率太差。新的构想没能实现,心情有些沮丧,但我想也应该让大家分享一下这个测试成果。

  这里我再解释一下树型里的竖线,树的左边都有 ┌ ├ └ │ 这些竖线图表示树层次,我的1.0版里是用一张张的小图片堆积起来的,而这种使用样式表的是用<div class="l2"></div> (l是字母L)这种代码来实现的,样式表负责填充背景图。

以下是代码片段:
    #www_webjx_com .l0{background:url(line0.gif) no-repeat center}
    #www_webjx_com .l1{background:url(line1.gif) no-repeat center}
    #www_webjx_com .l2{background:url(line2.gif) no-repeat center}
    #www_webjx_com .l3{background:url(line3.gif) no-repeat center}
    #www_webjx_com .l4{background:url(line4.gif) no-repeat center}
    #www_webjx_com .ll{background:url(line5.gif) no-repeat center}
    #www_webjx_com .pm0{background:url(plus0.gif) no-repeat center}
    #www_webjx_com .pm1{background:url(plus1.gif) no-repeat center}
    #www_webjx_com .pm2{background:url(plus2.gif) no-repeat center}
    #www_webjx_com .pm3{background:url(plus3.gif) no-repeat center}
    #www_webjx_com .expand .pm0{background:url(minus0.gif) no-repeat center}
    #www_webjx_com .expand .pm1{background:url(minus1.gif) no-repeat center}
    #www_webjx_com .expand .pm2{background:url(minus2.gif) no-repeat center}
    #www_webjx_com .expand .pm3{background:url(minus3.gif) no-repeat center}

  上面这段CSS是我在脚本里动态生成的一段样式的片段,我把它贴上来,有助于后面的讲解。运用样式表之后,果真精简了许多,每个节点的生成也够快,但我发现,当我的树节点量达到,比如说300-500个节点之后,节点生成的效率没有影响什么,但每个节点的展开/收缩很慢很慢,需要几秒钟以上甚至10秒,且这个期间的CPU占用率是100%。说明一下,树型的展开/收缩是设置父节点的 style.display = none|block 来实现的。我的电脑配置是:AMD2800+ 1GDDR400内存,配置不太差的。

  我首先的反应是:是不是用了太多的<table>影响了效率?因为我每一个节点都用了一个<table>,但是我把<table>换成了<div>、<span>等,效率没有什么改善,说明这个CPU占用率100%的问题不是HTML标签的问题,那么剩下来的问题就是这里使用了样式表。

  以一个500节点的量来说吧,1.0里左边大概要堆积2000个左右的小图片。这种情况在浏览器端设置本地不缓存的时候会存在很大的问题,要加载这些多的小图片需要消耗不少的时间和服务器资源,所以我才会有这种新的用样式表来解决的想法,现在换成样式表法,也就是大概有2000个地方需要用样式表来渲染出背景图。我测试了各种情况,再对比1.0版的代码得出的结论是:CPU的点用率如此之高,唯一的原因也就只有这种渲染的耗时了。验证也非常简单,我把上面的样式表的左边 #www_webjx_com 这部分去掉,也就是去掉样式表的依托关系,测试的结果发现效率改善了很多,但耗时依然是可观的,有3-5秒之多。

  另外我换了不同的浏览器,测试的结果也不太一样,在IE里最为恶心,比如说我在某个节点有500子节点,我将它收起(CPU100%,等待3-5秒),也就是display="none",这时候若我去收起这个节点的父节点(这个节点没有其它的同级节点,即它的父节点只有它这么一个子节点),照理说只有一个节点,收起应该是即时的事,但结果不然,结果又是3-5秒的CPU100%,这个让我狂郁闷,也就是说即使HTML对象被display="none"隐藏掉了,但是对它的父级进行任何操作的时候,IE会对这些被隐藏的对象用样式表重新渲染一遍,真是搞不懂IE的开发者当初是怎么想的。

  我又到FIREFOX里测试了一下,在收起的时候(display=none)是瞬间的,可以肯定,FF对待被隐藏的对象不会再消耗精力。当然展开的时候所有的浏览器都一样:3-5秒的CPU100%,不过FF稍微要快些。

  通过上面的这些现象我得出这么一个结论:样式表在动态渲染的时候效率并不高;在父容器发现状态变化的时候会引起它的所以子孙对象的样式表重新渲染;FireFox 对待被display=none隐藏的对象不会重新渲染而IE会。

  那么这种样式表的渲染效率问题以前为什么一直没有被发现呢?嘿嘿,大家做网页的时候难得会做到这种极端的时候,一个页面里有几千个需要样式表渲染背景图。通常也就几个地方或者几十个地方了,所以感觉不出来渲染的效率,也感觉不出这方面在不同的浏览器之间的差别。但是在做树这些的控件的时候必定会碰到各种极端的问题,比如大数据量的数组,生成的HTML对象的多少等等,象这种渲染的效率差别也只是我在写JS脚本时碰到的问题之一而已。今天我把这个测试结果共享出来是希望对大家以后写程序的时候有所借荐,在做设计的时候有所考虑。

网页CSS背景图片使用的测试结果

 


中查找“网页CSS背景图片使用的测试结果”更多相关内容

中查找“网页CSS背景图片使用的测试结果”更多相关内容



上一篇:网站进行W3C XHTML1.0验证的经验
下一篇:使用CSS固定背景
最近更新 赞助商
·网站设计Tab标签切换的效果制作11-07
·21个好玩、有趣味、实验性的css技术运用..11-07
·IE与FireFox在JavaScript和Css上的几处区别10-28
·CSS加JS让图片自动适应大小,任意浏览器..10-28
·FireFox浏览器和IE浏览器下CSS兼容问题10-21
·Web开发期待的CSS的一些功能10-21
·css教程:网页字体及字体大小的设计09-18
·CSS Alpha透明相关知识学习09-18
·关于W3C CSS标准的一些经验09-18
·div+css制作网页实战笔记心得09-18
·CSS网页布局的好处与坏处09-18

共有评论 0 条 网友评分 0分 查看所有评论


发表评论→ 学而不思则罔,思而不学则殆,请大胆发表你的见解。

输验证码:

您对此篇文章的评分:1分 2分 3分 4分 5分

  • 站内搜索
关键词

搜索方式

搜索范围

精确匹配
Baidu
网站首页 - 关于本站 - 网站地图 - 广告合作 - 站点声明 - RSS订阅 - 联系我们
Copyright © 2005 网海拾贝.[新ICP备05003216号]. All Rights Reserved .