在效率至上的互聯(lián)網(wǎng)時(shí)代,用戶是不會(huì)花費(fèi)太多的時(shí)間等待網(wǎng)站頁(yè)面的響應(yīng)。要提高網(wǎng)站響應(yīng)速度,最重要的一點(diǎn)就是減少http請(qǐng)求,那么那么企業(yè)網(wǎng)站建設(shè)怎么做才能減少http請(qǐng)求呢?
一般來(lái)說(shuō)要減少http請(qǐng)求通常從兩個(gè)方面下手:減少圖片的請(qǐng)求、減少腳本文件與樣式表的請(qǐng)求
圖片的減少通常有兩種方式:csssprites、內(nèi)聯(lián)圖片、IconFont。
CSSSprites:將多張圖片合并成一幅單獨(dú)的圖片,使用css的background-position屬性,將html元素的背景圖片放到sprites圖片中的期望位置上。使用這項(xiàng)技術(shù)的附加優(yōu)點(diǎn)是他降低了下載量,合并后的圖片比分離的圖片和更小,因?yàn)樗档土藞D片自身的開(kāi)銷(xiāo)(顏色表、格式信息等等)。實(shí)際項(xiàng)目中csssprites是一項(xiàng)體力活,因?yàn)殚_(kāi)發(fā)過(guò)程中需要對(duì)這張大圖進(jìn)行維護(hù)(添加、減少圖片),張?chǎng)涡裢瑢W(xué)的文章中有介紹如何管理sprites圖片可以作為參考(這里)。如果需要在頁(yè)面中為背景、鏈接、導(dǎo)航欄提供大量的圖片,csssprites絕對(duì)是一種優(yōu)秀的解決方案(干凈的標(biāo)簽、較少的圖片、較短的響應(yīng)時(shí)間)。
內(nèi)聯(lián)圖片:通過(guò)使用data:URL模式可以再頁(yè)面中包含圖片而無(wú)需任何額外的請(qǐng)求。缺點(diǎn)就是IE8以下的瀏覽器不支持這種方式,而IE8在數(shù)據(jù)大小上有限制,只能支持23kb以內(nèi)的數(shù)據(jù)。對(duì)于較小的圖片來(lái)說(shuō)可以直接內(nèi)聯(lián)到web頁(yè)面中,但對(duì)于大圖片內(nèi)聯(lián)到頁(yè)面里會(huì)導(dǎo)致頁(yè)面變大,聰明的做法是使用css,將內(nèi)聯(lián)的圖片作為背景使用,并放到外部樣式表中,這意味著數(shù)據(jù)可以緩存在樣式表內(nèi)部。使用外部樣式表雖然增加了一個(gè)http請(qǐng)求,但樣式可以被瀏覽器緩存,得到額外的收獲。另外一點(diǎn)需要注意:base64是有損壓縮。
IconFont:圖標(biāo)字體,這是近年來(lái)新流行的一種以字體代替圖片的技術(shù)。它可以適應(yīng)任何分辨率而不會(huì)出現(xiàn)圖片模糊問(wèn)題,與圖片相比它具有更小的容量,更高的靈活性(像字體一樣可以設(shè)置圖標(biāo)大小、顏色、透明度、hover狀態(tài)、反轉(zhuǎn)等),IE8以上的瀏覽器都支持該技術(shù)。在使用IconFont之前,你首先要確定你選則的字體庫(kù)是否是收費(fèi)。
減少腳本與樣式表的請(qǐng)求主要原則就是合并。在實(shí)際開(kāi)發(fā)中我們遵循模塊化的原則將代碼分散到許多小文件中,按照軟件開(kāi)發(fā)的原則這是完全正確的,但對(duì)于上線頁(yè)面來(lái)說(shuō),每一個(gè)文件都會(huì)產(chǎn)生一個(gè)http請(qǐng)求,嚴(yán)重影響性能。和csssprites一樣,將這些小文件合并到一個(gè)文件中,可以減少http請(qǐng)求的數(shù)量并縮短最終用戶響應(yīng)時(shí)間。在合并過(guò)程中我們還需要使用工具精簡(jiǎn)(移除不必要的字符以減小文件大小縮減下載時(shí)間)和混淆(除了移除不必要字符外,還會(huì)改寫(xiě)源代碼,比如函數(shù)和變量名使用更短的標(biāo)量名)Javascript代碼。對(duì)于采用AMD或CMD進(jìn)行模塊化開(kāi)發(fā)的同學(xué),在合并過(guò)程中通常會(huì)將依賴的其他模塊打包到一個(gè)文件中,而模板html通常以字符串的方式內(nèi)聯(lián)到Javascript文件中。目前最常用的前端構(gòu)建工具就是glup,這里有一篇初步應(yīng)用的文章:前端|gulp打包require.js模塊依賴。
這是網(wǎng)總管小編總結(jié)的一些減少http請(qǐng)求的方面,有未盡之后請(qǐng)大家包涵。當(dāng)然對(duì)于網(wǎng)站建設(shè)全網(wǎng)推廣方面的疑問(wèn),歡迎隨時(shí)垂詢。
標(biāo)簽:九江
林芝
烏魯木齊
鹽城
東營(yíng)