靜態資源打包:一個javescript 的src引用多個文件,一個link引用多個CSS文件

疑惑描述:javascript

查看了淘寶網的首頁源文件,看到這樣的一個特殊的css

<script src="http://a.tbcdn.cn/??s/kissy/1.1.6/kissy-min.js,p/global/1.0/global-min.js,p/et/et.js?t=2011092320110301.js"></script>html

裏面用逗號分隔了幾個js文件kissy-min.js,p/global/1.0/global-min.js,p/et/et.jshtml5

這個是什麼道理?一樣的還有CSS java

<link href="http://a.tbcdn.cn/p/fp/2011a/??html5-reset-min.css,global-min.css,header/header-min.css,product-list/product-list-min.css,attraction/attraction-min.css,expressway/expressway-min.css,category/category-min.css,category/sub-promotion-min.css,guide/guide-min.css,hotsale/hotsale-min.css,bottom-gg/bottom-gg-min.css,subfooter/subfooter-min.css,local-life/local-life-min.css,footer/footer-min.css?t=20111213.css" rel="stylesheet">jquery

又如蝦米中的(http://res.xiami.net/??static/js/lib/jquery.tmpl.min.js,static/js/app/relation.js,static/js/app/nameCard.js?ver=20140116-175037)web

 

解答:express

這個叫靜態資源打包,由於瀏覽器下載靜態文件的時候是有線程數限制的,因此下載1個100K的js/css,會比10個10k的js/css快的多,爲了提升性能,服務器端會把js/css合併成一個文件(由於都是文本嘛)再向客戶端輸出。好比,一個請求的地址是:http://www.abc.com/static/pack?js=a,b,c,d,e,那麼服務器端你在這個請求的接口裏,根據js參數的值,把a.js到e.js的內容讀取出來,再合併成一個文件(通常同時還會壓縮,好比去空格,好比縮短變量名等),輸出到客戶端。若是服務器端再加上緩存,那可能連合並都不須要了。這樣頁面加載速度會快很是多。比較經常使用的js打包工具備google的google closure,css用yui compressor。基本思想就是這樣,具體的你能夠搜一下。瀏覽器

 

 

http://a.tbcdn.cn/??s/kissy/1.1.6/kissy-min.js,p/global/1.0/global-min.js,p/et/et.js?t=2011092320110301.js 雖然你看着像三個js文件用逗號分隔,其實對javascript來講是一個文件名,你能夠複製放在瀏覽器地址欄裏訪問的。可能實際確實是三個js文件 的,可是經過http://a.tbcdn.cn這個服務器程序資源打包之後,作爲一個response了,這樣減小請求服務器端的次數提升性能。緩存

 

href中的內容:http://st.******.com/??css/basic/core_mod.css,res/css/default/main15.css,res/css/default/beta15.css,res/player/img/web_player.css?v10182012,其實真實的指向地址是:http://st.******.com/,?後面的內容是查詢字符串,服務器端會解析這個查詢字符串中包含的多個文件,而且合併到一個文件中,最終的目的是減小瀏覽器發出請求的次數,達到優化頁面打開時間的效果。

 

許多高瀏覽量的大型網站 爲了方便加快網站的顯示速度,減小頁面的緩衝,將多個js/css文件合併成一個,這樣當用戶打開網站的時候,一個js/css連接就只須要像服務器發送一次請求,若是是多個,則須要執行屢次請求.因此這樣減小了向服務器發送請求的次數,用戶查看到完整頁面的速度也快了不少,由於不少用戶並不肯意在等待網站頁面緩衝上花費太多時間.

你能夠看看這個http://www.cnblogs.com/shoupifeng/archive/2010/01/12/1645431.html

淘寶還有不少類是的案例,好比淘寶商城一個很長的商品介紹頁面,爲了加快頁面顯示速度,只顯示你瀏覽器大小的頁面內容,下面你沒看到的內容先不顯示,當你將鼠標移到下面看其餘商品圖片的時候,它纔像服務器發送請求來顯示下面的頁面內容

這個叫 圖片延遲加載技術(ImageLazyLoad)

 

一個link引用幾個css文件合適,大型網站的話確定不止一個css文件·???

網站首先要進行CSS文件合併和壓縮,若是合併壓縮後還有多個的話可使用這種方式進行合併請求,服務器端再對文件進行整合合併,至於引用幾個CSS文件合適,這個沒有具體的要求,可是合併壓縮後的CSS文件不會太多吧!

 

延伸:http://www.cnblogs.com/shoupifeng/archive/2010/01/12/1645431.html

http://www.infoq.com/cn/articles/front-end-engineering-and-performance-optimization-part1

相關文章
相關標籤/搜索