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

一.我们需要解决的麻烦
       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

时间: 2024-09-20 08:07:11

优化网页之快速的呈现我们的网页_javascript技巧的相关文章

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

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

jQuery javascript获得网页的高度与宽度的实现代码_javascript技巧

网页可见区域宽: document.body.clientWidth 网页可见区域高: document.body.clientHeight 网页可见区域宽: document.body.offsetWidth (包括边线的宽) 网页可见区域高: document.body.offsetHeight (包括边线的高) 网页正文全文宽: document.body.scrollWidth 网页正文全文高: document.body.scrollHeight 网页被卷去的高: document.b

如何快速的呈现我们的网页

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

javascript和jQuery实现网页实时聊天的ajax长轮询_javascript技巧

介绍 大家都知道,HTTP协议是一个属于应用层的面向对象的协议,HTTP 协议一共有五大特点: 1.支持客户/服务器模式; 2.简单快速; 3.灵活; 4.无连接; 5.无状态. 所以一次的请求都是一个单独的事件,和前后都没有联系.所以我们在解决网页实时聊天时就遇到一个问题,如何保证与服务器的长时间联系,从而源源不段地获取信息. 一直以来的方式无非有这么几种: 1.长连接,即服务器端不断开联系,PHP服务器端用ob系列函数来不停的读取输出,但是相当耗费服务器资源. 2.Flash socket,

纯js网页画板(Graphics)类简介及实现代码_javascript技巧

今天需要在网页上画一个图谱,想到用JS,经过学习,和网上搜索,经过整理优化得到下面代码,注意不是用HTML5的canvas,而是用的纯js 复制代码 代码如下: /* 以下画点,画线,画圆的方法,都不是用HTML5的canvas,而是用的纯js 用到了一些数学的三角函数方法 以下代码是课堂随机写出,没有做更多优化 */ /* 面向对象封装,添加绘制矩形 进一步优化代码 */ var Graphics = function(divId, color){ this.divId = divId; th

网页上的Javascript编辑器和代码格式化_javascript技巧

为什么不用textarea呢? 1 没有高亮 2 tab键无法使用.--按tab键会切换到下个控件 3 没有代码格式化.--因为习惯了Eclipse的环境,可以使用ctrl+shift+F来代码进行格式化. 当然,我还没强大到自己实现的程度,而且用脚趾头都能想到肯定有人实现了,就看找不找得着. 经过了艰难的搜索,终于在SourceForge上找到一个叫EditArea的项目,感觉挺好.http://sourceforge.net/projects/editarea/ 它的sample也很清楚 在

JavaScript实现网页上的浮动广告的简单方法_javascript技巧

漫游于网络之间,你会发觉,因特网不但是信息的海洋,也是广告的海洋.除了普通的Gif Banner.Flash外,浮动广告也是时下网上较为流行的广告形式之一.当你拖动浏览器的滚动条时,这种在页面上浮动的广告,可以跟随屏幕一起移动.尽管这种效果对于广告展示有相当的实用价值,但对浏览你网页的人来讲,这则是个既妨碍阅读,又影响阅读兴趣的东西,因此一定不能滥用.不过,如果你能善用的话,它就能发挥出极大的作用. 要做出浮动式广告的效果并不困难,如果你有JS基础的可以自己写一个,如果连写都懒得写的话,到网上下

js给网页加上背景音乐及选择音效的方法_javascript技巧

本文实例讲述了js给网页加上背景音乐及选择音效的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: <HTML> <HEAD> <TITLE>给网页加上背景音乐,选择音效功能</TITLE> <STYLE> <!--样式单 --> a{font-size:30pt;color:blue;font-family:Vineta BT} a:link{text-decoration:none;} a:hover{text-

JS实现超简洁网页title标题跑动闪烁提示效果代码_javascript技巧

本文实例讲述了JS实现超简洁网页title标题跑动闪烁提示效果代码.分享给大家供大家参考,具体如下: 这里演示不几行JS代码实现的网页Title文字跑动效果,类似有消息时的标题闪烁提醒功能,在JS代码中,当变量_record累加到3是,将其赋值为1.相当于无限循环.需要显示的消息提示内容可自拟哦. 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js/2015/js-title-blink-style-codes/ 具体代码如下: <html xmlns="