JS合併的必要性分析

2021-07-05 05:05:09 字數 1569 閱讀 5697

js合併的必要性分析

一、效率因素 

一般來說,在乙個web工程中,需要使用大量的js,這些js可能來自許多提供者。 

而在頁面訪問時,每次訪問資源都要發起乙個http請求,因此,即使檔案已經緩衝,也需要發出一次http請求來確認檔案是否被改變過。如果js個數比較少,那麼沒有什麼問題,但是當js檔案數目比較多的時候,就會導致頁面訪問效率下降。如果能把所有的js都合併為乙個檔案,那麼就可以節省幾百毫秒,甚至幾秒的時間,視網路狀況而定。如果不需要做任何人為處理,就節省下來這些時間,無疑是相當有意義的。

二、js引入順序問題 

如果說,效率問題還只是使用者體驗的問題,而js引入順序問題,就會導致你的頁面是否可以執行的問題。我們知道,如果js如果有依賴其它js庫,則被依賴的js庫就要放在依賴的js庫的前面,否則就會發生js錯誤。當引用的js庫比較小的時候,問題當然不大,但是做企業應用的時候,要用到的js非常多,甚至在開發後期或維護期還會增加新的js,這時稍有不慎,就會出現js引入順序問題。

為此,tiny框架提供了解決方案,可以把工程中所有引用的js資源都根據依賴關係,按順序放在乙個js引用當中,它可以保證js的引用順序是正確的,同時由於所有的js都只放入乙個檔案,因此,只會發出一次http請求;第三提供了檔案壓縮傳輸功能,所以會保證網路傳輸量最小。

從下圖中,可以看到,引入的js只有乙個檔案:uiengine.uijs,總共用時609ms 

2015-5-27 15:02 上傳

再次訪問,可以看到,靜態資源都已經是304,全部來自緩衝了,其中js用時58ms。 

2015-5-27 15:02 上傳

實際上這裡面包含的js檔案有許多個,序列用時5434ms: 

2015-5-27 15:02 上傳

2015-5-27 15:02 上傳

2015-5-27 15:02 上傳

可以看到,原本5m的傳輸量已經變為936kb,訪問時間為352ms,較壓縮之前訪問時間,少了237ms,時間是的58%,因此,訪問時間有一定提公升,尤其是網路頻寬只有原來的18%,這個提公升還是非常顯著的。

不同的訪問,資料會有一些差異,會有一些變化,但是總體來看差異還是顯著的。緩衝後再訪問,載入的序列時間比率為 1:合併檔案個數,也就是說與合併的檔案個數成正比。

新又增加了css合併,解決了資源引用的問題,有圖有真相: 

2015-5-27 15:02 上傳

從圖中看到,css都已經被合併到uiengine.uicss檔案中了。 

下面還有乙個css沒有合併,是由於這個是**樣式,要用來動態切換的,如果把它也合併了,就沒有辦法進行**動態切換了。

this的必要性

先看下面一段 lesson8 necessary of this class person show name public void showinfo class demo 8 1 this屬於乙個物件,代表的是物件,其實就是乙個物件的引用,只能在類定義的方法中使用。那麼它代表那個物件呢?答 哪個...

it 的必要性

for std vector iterator itlocal m vecsoftwareer.begin itlocal m vecsoftwareer.end else it 如上所示,c 98中map erase並沒有返回值為iterator的原型函式。那麼問題來了it map.erase i...

sh c的必要性

在linux使用 echo 並配合命令重定向是實現向檔案中寫入資訊的快捷方式。比如要向 test.asc 檔案中隨便寫入點內容,可以 echo 資訊 test.asc 或者 echo 資訊 test.asc 下面,如果將 test.asc 許可權設定為只有 root 使用者才有許可權進行寫操作 su...