優化網頁之快速的呈現我們的網頁

優化網頁之快速的呈現我們的網頁
關鍵字:優化網頁之快速的呈現我們的網頁
一.我們需要解決的麻煩
       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
江苏时时彩正规吗