第1章:減少HTTP請求

緒論A中介紹了性能黃金法則,法則揭示了只有10%20%的時間花費在接受HTML文檔上,剩下的80%90%都花費在所有組件的HTTP請求上(CSS,JS,圖片,F(xiàn)lash等)。因此改善響應時間,最簡單的途徑就是減少組件的數(shù)量,并由此減少HTTP請求的數(shù)量。

從頁面移除組件勢必會引起產(chǎn)品和開發(fā)的矛盾,為了既滿足產(chǎn)品需求,又使開發(fā)者提高網(wǎng)站的訪問效率,本章提供了如下技術(shù):

  • 圖片地圖
  • CSS Sprites
  • 內(nèi)聯(lián)圖片和腳本
  • 樣式表的合并

圖片地圖(Image Map)

超鏈接一般帶有一些文本,比如<a>標簽那樣,并被關(guān)聯(lián)到目標URL上,一種更為美觀的做法是,將超鏈接關(guān)聯(lián)到圖片上,使用圖片地圖方式可以減少HTTP請求,而且無需改變頁面外觀。
圖片地圖允許你在一個圖片上關(guān)聯(lián)多個URL,目標URL取決于用戶點擊了圖片上的哪個位置。

書上給了一個例子,我截了個圖:


image.png

CSS Sprites

CSS Sprites同樣可以合并圖片,但是更為靈活。CSS Sprites就是將多個圖片合并到一張單獨的圖片中。


image.png

看完了突然想起了QQ、微信的表情,還有富文本編輯器是不是也這么做的呢?
任何支持背景圖片的HTML元素都可以使用CSS Sprites,比如div,span。
使用它們的background-position屬性將HTML元素放到期望的位置上。
例如這樣:


image.png

image.png

image.png

background-position屬性指定了CSS Sprites的偏移量。

圖片地圖和CSS Sprites看起來非常類似,但是圖片地圖中的圖片必須是連續(xù)的,CSS Sprites則沒有這個限制。
它們都有一個優(yōu)點就是通過合并圖片減少HTTP請求,CSS Sprites還降低了下載量。
實際上,合并后的圖片比分離的圖片的總和要小,因為它降低了圖片的開銷(顏色表,格式信息等等)

所以,當頁面中為背景,按鈕,導航欄,鏈接等提供大量圖片時,可以優(yōu)先考慮CSS Sprites。

內(nèi)聯(lián)圖片(Inline Image)

通過data:URL模式可以在Web頁面中包含圖片,而且無需任何額外的HTTP請求。
要注意IE7以下不支持這個屬性,所以無法應用于IE7以下的IE瀏覽器。
data:URL模式的官方描述是,“允許將小塊數(shù)據(jù)內(nèi)聯(lián)為‘立即數(shù)’”,數(shù)據(jù)就在URL中。
語法是這樣的,以<img>標簽為例。[;base64]為可選數(shù)據(jù)。
<img src="data:圖片路徑[; base64], 數(shù)據(jù)內(nèi)容">

data:一般都用于內(nèi)聯(lián)圖片,但它可以用在任何需要制定URL的地方,包括<scripts>和<a>標簽。

當然,內(nèi)聯(lián)圖片也是受限制的,IE7及以下版本不支持,而且在數(shù)據(jù)大小上也有限制,一般不能超過100kb。base64編碼會增加圖片的大小,因此整體下載量會增加。

合并腳本和樣式表

盡量把多個js文件和css文件合并起來,因為每個文件都需要使用http請求,而為了加快響應速度,必須減少HTTP數(shù)量,這是核心思想。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 14,160評論 1 92
  • 網(wǎng)站優(yōu)化離不開前后端的互相協(xié)作,但是對于前端工程師來說,在保證后端技術(shù)方案不變時,能不能只利用前端技術(shù)來優(yōu)化網(wǎng)站呢...
    留七七閱讀 6,585評論 0 31
  • Yahoo!的Exceptional Performance團隊為改善Web性能帶來最佳實踐。他們?yōu)榇诉M行了一系列...
    拉風的老衲閱讀 1,957評論 0 1
  • 前端開發(fā)面試知識點大綱: HTML&CSS: 對Web標準的理解、瀏覽器內(nèi)核差異、兼容性、hack、CSS基本功:...
    秀才JaneBook閱讀 2,780評論 0 25
  • 總有人說“千里馬常有,而伯樂不常有”,仿佛這世間英雄很多,慧眼極少,以至于發(fā)生了太多“明珠蒙塵”的悲劇。但是就在這...
    邱彼岸閱讀 319評論 2 2

友情鏈接更多精彩內(nèi)容