從前端角度來(lái)看高性能網(wǎng)站建設(shè)的幾個(gè)原則

2017-03-22    分類(lèi): 網(wǎng)站建設(shè)

我對(duì)于Web網(wǎng)站開(kāi)發(fā)開(kāi)有很多年的實(shí)踐經(jīng)驗(yàn),提供網(wǎng)站相應(yīng)速度一直是網(wǎng)站開(kāi)發(fā)人員孜孜不倦的追求,無(wú)論后端程序的優(yōu)化,數(shù)據(jù)庫(kù)的優(yōu)化,還是前端的優(yōu)化,最終目的只有一個(gè),讓網(wǎng)站更快的打開(kāi),給用戶(hù)提供更好的瀏覽體驗(yàn),這里只介紹從前端人員的角度來(lái),在網(wǎng)站建設(shè)中要注意的一些原則。

1、減少網(wǎng)站的HTTP請(qǐng)求數(shù)

構(gòu)造請(qǐng)求、等待響應(yīng)需要時(shí)間,因此請(qǐng)求數(shù)量越少越好,減少請(qǐng)求的總體思路就是合并資源,減少顯示一個(gè)頁(yè)面需要的文件數(shù),常規(guī)的方法有:

1.1 Image Map

通過(guò)設(shè)置標(biāo)簽的usemap屬性與使用標(biāo)簽可以在一幅圖片上切分出多個(gè)區(qū)域,指向不同的鏈接。比起使用多幅圖片分別構(gòu)造鏈接減少了請(qǐng)求數(shù)。

1.2. CSS Sprite(CSS貼圖整合/貼圖拼合/貼圖定位)

通過(guò)設(shè)置元素的background-position樣式做到。一般用于界面圖標(biāo)。典型的可以參考TinyMCE編輯器上方的那些小按鈕。多個(gè)小圖實(shí)質(zhì)是從一個(gè)統(tǒng)一的大圖通過(guò)不同的偏移量裁剪而來(lái),這樣加載界面上的眾多按鈕實(shí)際上只要請(qǐng)求一次(請(qǐng)求大圖一次),從而減少HTTP請(qǐng)求數(shù)。

2、 使用Gzip壓縮
使用Gzip壓縮HTTP報(bào)文,減小體積,減少傳輸時(shí)間。
3、 將css樣式表文件置于頁(yè)面前部

先加載樣式表,這樣頁(yè)面渲染得以較早開(kāi)始,給用戶(hù)頁(yè)面加載較快的感覺(jué),所以css最好放在之間。

4、將Js腳本放在頁(yè)面底部

原因同3,先處理頁(yè)面顯示,頁(yè)面渲染較早完成,而腳本邏輯稍后執(zhí)行,這樣給用戶(hù)頁(yè)面加載較快的感覺(jué)。

5、避免使用CSS表達(dá)式

過(guò)于復(fù)雜的JavaScript腳本邏輯、DOM查找、選擇操作將會(huì)降低頁(yè)面處理效率。
6、將JavaScript與CSS作為外聯(lián)資源
這似乎與原則1中的合并思想相悖,但其實(shí)不然:考慮每個(gè)頁(yè)面都引入了一個(gè)公共的JavaScript資源(例如jQuery或是ExtJS這樣的JavaScript庫(kù)),單就一個(gè)頁(yè)面的表現(xiàn)來(lái)看,內(nèi)聯(lián)(即將JavaScript嵌入HTML)頁(yè)面將比外聯(lián)(使用