本話題位址,參與即可獲得禮品:
<a href="https://yq.aliyun.com/roundtable/65388">https://yq.aliyun.com/roundtable/65388</a>
前端優化中,檔案合并及壓縮總是會被作為很重要的一條提及。最主要的依據是減少了大量的http請求。那麼檔案真的能大幅降低伺服器壓力嗎?
通常合并主要有兩個目的:
為了減少http請求數。
代碼安全考慮(檔案分得越多,越容易被人看清)。
這種方式就是不管三七二十一,所有js/css/圖檔檔案各自合并成一個大檔案,所有頁面都引用它,即使某些代碼/圖檔可能不會用到。
雖然這種方式将請求數降低到了3個http請求的超低數,但是同時這種方式也有個很大的缺點。有些頁面很簡單,隻需要很小一部分的js或css,甚至可能沒有引用多少圖檔,卻加載了所有的資源。量化一下,就是1%的需求,卻加載了100%的資源。顯然,這種方式在大幅降低了HTTP請求的同時,也大幅增加了帶寬的消耗。
微信頁面引用的圖檔檔案(部分内容)

除此之外,将多個檔案合并成一個超大檔案,對檔案的内容維護,也增加了非常大的難度。比如你在修改某一個頁面的css樣式時,很有可能需要在幾千行css代碼裡,ctrl+f來找一行樣式。而更新圖檔更是凄慘。你隻需要修改一個小圖示檔案,卻要将整個已經合并可能高達1MB的圖檔檔案重新釋出一次。
那麼如果不合并又會是怎麼樣?
如果不合并,需要什麼資源,就引用對應的檔案資源。在帶寬消耗上確定做到了最低。同時,在對引用的資源進行維護時,也非常友善。修改了什麼檔案,直接釋出該檔案即可。使用者也不需要将合并後的大檔案,全部重新下載下傳。
但是,一個網站首頁往往會引用多達十幾個JS檔案,數個CSS檔案和幾十個圖檔檔案。也就是說,一個首頁的http請求會高達上百。
雲栖社群抽獎活動頁面頭部部分引用的js/css檔案: