优化网页之快速的呈现我们的网页

一.我们需要解决的麻烦
       A.减少HTTP请求数.
               减少HTTP请求数有什么好处:
                      降低服务器跟客户端的建立和消除HTTP请求和响应Header的开销
                        减少服务器为HTTP连接的进程和线程的开销,如果可能,还会包括GZIP压缩的CPU开销.
       B.减小被请求文件大小, 减少请求数据占用的网络带宽.
       C.让用户更快的看到想要的结果.
       D.提高客户端渲染速度.
       E让浏览器同时能请求更多的数据.
       F.提高服务器相应速度.
       G.通过版本化控制客户端Cache.

引用
二.如何解决我们的麻烦

A.如何减少HTTP请求数
               1.合并JS文件跟 CSS文件.

2.合并框架图片以及相对变动较少的图片成一张,通过CSS背景切割来完成渲染.
               3.合理使用本地Cache来缓存JS/CSS/IMAGE.
                               4.合理使用UserData缓存JS文件,对于FF用户可以单独请求服务器,这样能解决80%用户的问题.
                               5.把JS跟CSS合并成一个文件
                    写法如下:

<?header('Content-type: */*');?>
                                       <!-- /*
                                       window.onload=function(){
                                               document.getElementById("test2").innerHTML="传说中滴JS测试者。如果你看到我,那<strong>JS</strong>也生效了";
                                       }
                                       <!-- */ 
                                       <!-- #test1,#test2{border:3px #000 solid;padding:5px;color:#123456;background-color:#ccc;} strong{color:red;}

引用
              以上内容的文件同时被JS跟Style引用,都是有效的

B.减小被请求文件大小,减少请求数据占用的网络带宽
               1.压缩JS体积
                       删除JS中空白换行,注释,混淆把长变量换成短变量
               2.压缩CSS体积
                       删除CSS注释
                       CSS中的写法尽量用简写,比如:
                               .bak{background:url(sina.gif) no-repeat left};
               3.使用DIV+CSS方式搭建网站结构,提高CSS重用性,来减少HTML文件大小.
               4.使用服务器端GZIP压缩JS/ CSS文件,缩小传输文件大小.
                       附注:Apache1跟Apache2的GZIP的效率跟方式不一样的,根据需要自行选择

C.让用户更快的看到想要的结果
               用户对于一个站点的白页的忍受时间根据统计是8-12秒.
       对于用户能忍受的页面白页时间是8-10秒, 白页的产生可能由于各种原因引起,我们能做的就是怎么让用户能变的稍微能等待更久.

方案1.多做一个引导页,让用户体会其中的变化
                               案例:mail.aol.com中的loading引导页

方案2.优先载入页面结构以及结构图片,后一步载入当前页面数据,再后        一步载入Iframe,Flash等数据.让用户尽早的看到被打开页面的希望.

D.提高客户端渲染速度
               这个问题就比较泛泛了,影响客户端的渲染速度有多方面的,主要目的都是提高程序方面的效率.
               1.        对于大索引的结构,尽可能的少用索引访问,能用访问兄弟节点的方式尽可能用访问兄弟节点的方式.
               var t1=new Date();
               var xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
               xmlDoc.async="false";
               xmlDoc.load("xml.xml");
               var node=xmlDoc.documentElement.firstChild;
               var a=[],i=-1;
               do a[++i]=node.getAttribute("text");
               while(node=node.nextSibling);
               a=a.join("");
               document.write(a.length);
               alert(new Date()-t1);

引用
               2.        字符串拼接尽可能用数组方式

<script language="JScript">
               function StringBuilder(sString){//字符串连接操作类
                       this.length=0;
                       this.append=function(sString){
                               this.length+=(this._parts[this._current++]=String(sString)).length;
                               this._string=null;
                               return this;
                               }
                       this.toString=function(){
                               if(this._string!=null)
                                       return this._string;
                               var s=this._parts.join("");
                               this._parts=[s];
                               this._current=1;
                               return this._string=s;
                               }
                       this._current=0;
                       this._parts=[];
                       this._string=null;
                       if(sString!=null)
                               this.append(sString);
                       }
               var str=new StringBuilder();
               str.append("a");
               str.append("b");
               alert(str.toString());
               </script>

引用
              3.        大规模添加节点数据,请不要使用appendChild方式,尽量使用类似innerHTML的insertAdjacentHTML方式,FF下需修正
               function addHTML(oParentNode, sHTML) {
                       if(window.addEventListener) {// for MOZ
                               var oRange = oParentNode.ownerDocument.createRange();
                               oRange.setStartBefore(oParentNode);
                               var oFrag = oRange.createContextualFragment(sHTML);
                               oParentNode.appendChild(oFrag);
                       }
                       else {// for IE5+
                               oParentNode.insertAdjacentHTML("BeforeEnd", sHTML);
                       }
               }

E让浏览器同时能请求更多的数据.
               浏览器默认只是支持单域名同时有两个HTTP请求,使用多域名将能把请求数提高,在网络条件优良的情况下,能更快的下载数据,呈现结果.
               对于images2这样的机器,为什么能同时有超过2个以上请求数,有待考察.

F.对于需快速响应的文件,把其放入快速响应的服务器,应该是不错的方案,优化方案请系统储备组提供.

G.通过版本化控制客户端Cache.
       通常js/css这类文件改动比较频繁,但是为了加载速度变快,我们有可能需要设定这类文件的过期时间为几天后,这样我们碰到的问题就是,如何及时更新这些在cache的文件?
       通过一个简单的配置,通过修改JS的版本来及时告诉浏览器,这些文件必须重新请求了,不要继续使用浏览器cache中的数据.
       方案有好几个:
               1.        手动改这些js的文件名
               2.        手动改这些js的路径
               3.        通过URL Rewrite方式来改重定位js路径
               4.        通过一个在高响应服务器上的一个js配置告知页面,这个页面该链接哪些JS文件
               5.        大版本不变,小版本不断追加,等一定时间后,统一更新,高效利用cache

(0)

相关推荐

  • 优化网页之快速的呈现我们的网页

    一.我们需要解决的麻烦        A.减少HTTP请求数.                减少HTTP请求数有什么好处:                       降低服务器跟客户端的建立和消除HTTP请求和响应Header的开销                         减少服务器为HTTP连接的进程和线程的开销,如果可能,还会包括GZIP压缩的CPU开销.        B.减小被请求文件大小, 减少请求数据占用的网络带宽.        C.让用户更快的看到想要的结果.    

  • 如何快速的呈现我们的网页的技巧整理

    前几天小芳同学一直在群发起一些加速的话题,我已经把聊天记录抽出来,正打算整理出份像样的,没想到小芳同学非常速度的出了这篇.我的就省掉了,挖哈哈. 特别说一下了,这些方案并非适合所有的网站,很多部分有的网站还是不要做反而会更好.如果你还有更多的想法,可以到这里讨论或者评论,我只是归档成为方便阅读的,对了论坛和群讨论的另一些结果如果有价值我也会补充进来. 如何快速的呈现我们的网页 作者:flashsoft,(内容被我略修删过). 一.我们需达解决的麻烦 减少HTTP请求数. 减少HTTP请求数有什么

  • JavaScript拖拽效果示例网页解决快速拖拽的问题

    JavaScript拖拽示例网页--解决快速拖拽的问题 .drag{border:1px solid; width:400px; background:#CCCCCC;} #test1{ top:20px;} #test2{ left:40px;} var dragElement = null; var mouseY; var mouseX; var x=""; var y=""; var max = 1; function dragInit(node){ if(n

  • 腾讯QQ网页在线客服,隐藏在网页一侧的隐现效果二

    该特效需要用到相关的图片,比如那个效果的皮服,请各位自行将相关的图片下载到本地使用. 腾讯QQ网页在线客服,隐藏在网页一侧的隐现效果二 function move(x, y) { if (document.all) { object1.style.pixelLeft += x; object1.style.pixelTop += y;} else if (document.layers) { document.object1.left += x; document.object1.top +=

  • js性能优化 如何更快速加载你的JavaScript页面

    确保代码尽量简洁 不要什么都依赖JavaScript.不要编写重复性的脚本.要把JavaScript当作糖果工具,只是起到美化作用.别给你的网站添加大量的JavaScript代码.只有必要的时候用一下.只有确实能改善用户体验的时候用一下. 尽量减少DOM访问 使用JavaScript访问DOM元素很容易,代码更容易阅读,但是速度很慢.下面介绍几个要点:限制使用JavaScript来修饰网页布局,把针对访问元素的引用缓存起来.有时,当你的网站依赖大量的DOM改动时,就应该考虑限制你的标记.这是改用

  • 网站优化细节之网页信噪比

    网页信噪比表现:    有些网页以纯文本方式体现的网页和关键字词密度以及大小一样的网页在搜索引擎返回的结果高的原因.并且也能合理结实在一些搜索结果中,关联一个网站的第一页是网站的某个以文字出现的页面,而第二页才是该站的首页. 网页信噪比原理:    信噪比(Signal/Noise),原是电声学领域中的一个概念,指声音源产生最大不失真声音信号强度与同时发出噪音强度之间的比率.在网页优化中同样存在这样的原理,搜索引擎抓取页面,主要抓取除去html修饰后的文本内容,这部分内容可以认为是不失真声音信号

  • 网页的HTML静态化_网站优化之谈

    主要原因是:对于各种语言(ASP,PHP,JSP,CGI,.NET)动态页面经常采用多个页面来组成一个主页面,拿网站的首页来说:通常是把LOGO等头部分定义为一个页面,尾部版权部分也定义一个页面,主要是为了其他页面也可以方便的调用.所以网站的首页部分只用了一段代码调用了文件,也就少了很多搜索引擎要抓的关键字. 由于大量动态网页的存在,使得有些全动态网页的网站失去很多被用户发现的机会.为了网络营销的需要,如果网站无法全部用静态网页实现,应采用静动结合的基本方式,即能用静态网页解决的决不用动态网页,

  • 网页颜色搭配技巧 文字字体、字号、字体排版等

    对于做网页的初学者可能更习惯于使用一些漂亮的图片作为自己网页的背景,但是,浏览一下大型的商业网站,你会发现他们更多运用的是白色.蓝色.黄色等,使得网页显得典雅,大方和温馨.更重要的是,这样可以大大加快浏览者打开网页的速度. 一般来说,网页的背景色应该柔和一些.素一些.淡一些,再配上深色的文字,使人看起来自然.舒畅.而为了追求醒目的视觉效果,可以为标题使用较深的颜 色.下面是我做网页和浏览别人的网页时,对网页背景色和文字色彩搭配积累的经验,这些颜色可以做正文的底色,也可以做标题的底色,再搭配不同的

  • php中如何判断一个网页请求是ajax请求还是普通请求

    如何在php中判断一个网页请求是ajax请求还是普通请求?你可以通过传递参数的方法来实现,例如使用如下网址请求:/path/to/pkphp.com/script.php?ajax在php脚本中使用如下方法判断: 复制代码 代码如下: if(isset($_GET['ajax'])) { ...这是一个ajax请求,然后... } else { ...这不是一个ajax请求,然后... } 通过传递_GET参数的方法简单实现了网页请求的判断.但是如果需要这样的功能,这个方法可能就有弊端,功能需求

  • 借助javascript代码判断网页是静态还是伪静态

    最近一直在研究Dedecms,准备建站之前,就一直在想用不用伪静态,到现在还没有决定下来,想来想去,最好的办法还是看一看同类型的网站采用的是静态还是伪静态.那么我们打开一个网站,在基础知识不够的情况下,如何简单快速的判断出这个网页是静态还是伪静态呢?下面给大家来简单介绍一下: 伪静态和静态单从URL来看,很难分辨出来,一般网页后缀都是以.html结尾.我们可以借助一段简单的javascript代码判断一下: 首先说明这段javascript代码只能在IE里打开,用Chrome和Firefox无法

随机推荐