我對于Web網(wǎng)站開發(fā)開有很多年的實踐經(jīng)驗,提供網(wǎng)站相應(yīng)速度一直是網(wǎng)站開發(fā)人員孜孜不倦的追求,無論后端程序的優(yōu)化,數(shù)據(jù)庫的優(yōu)化,還是前端的優(yōu)化,最終目的只有一個,讓網(wǎng)站更快的打開,給用戶提供更好的瀏覽體驗,這里只介紹從前端人員的角度來,在網(wǎng)站建設(shè)中要注意的一些原則。
1、減少網(wǎng)站的HTTP請求數(shù)
構(gòu)造請求、等待響應(yīng)需要時間,因此請求數(shù)量越少越好,減少請求的總體思路就是合并資源,減少顯示一個頁面需要的文件數(shù),常規(guī)的方法有:
1.1 Image Map
通過設(shè)置<img>標(biāo)簽的usemap屬性與使用<map>標(biāo)簽可以在一幅圖片上切分出多個區(qū)域,指向不同的鏈接。比起使用多幅圖片分別構(gòu)造鏈接減少了請求數(shù)。
1.2. CSS Sprite(CSS貼圖整合/貼圖拼合/貼圖定位)
通過設(shè)置元素的background-position樣式做到。一般用于界面圖標(biāo)。典型的可以參考TinyMCE編輯器上方的那些小按鈕。多個小圖實質(zhì)是從一個統(tǒng)一的大圖通過不同的偏移量裁剪而來,這樣加載界面上的眾多按鈕實際上只要請求一次(請求大圖一次),從而減少HTTP請求數(shù)。
2、 使用Gzip壓縮
使用Gzip壓縮HTTP報文,減小體積,減少傳輸時間。
3、 將css樣式表文件置于頁面前部
先加載樣式表,這樣頁面渲染得以較早開始,給用戶頁面加載較快的感覺,所以css最好放在<head></head>之間。
4、將Js腳本放在頁面底部
原因同3,先處理頁面顯示,頁面渲染較早完成,而腳本邏輯稍后執(zhí)行,這樣給用戶頁面加載較快的感覺。
5、避免使用CSS表達(dá)式
過于復(fù)雜的JavaScript腳本邏輯、DOM查找、選擇操作將會降低頁面處理效率。
6、將JavaScript與CSS作為外聯(lián)資源
這似乎與原則1中的合并思想相悖,但其實不然:考慮每個頁面都引入了一個公共的JavaScript資源(例如jQuery或是ExtJS這樣的JavaScript庫),單就一個頁面的表現(xiàn)來看,內(nèi)聯(lián)(即將JavaScript嵌入HTML)頁面將比外聯(lián)(使用<script>標(biāo)簽引入)頁面加載更快(因為其較少的HTTP請求數(shù))。但如果有很多頁面都引入了這個公共JavaScript資源,那么內(nèi)聯(lián)方案會造成重復(fù)傳輸(因為這個資源內(nèi)嵌在每個頁面中了,所以每次打開一個頁面都要將這部分資源傳輸一遍,從而造成網(wǎng)絡(luò)傳輸資源的浪費(fèi))。而將這種資源獨(dú)立出來外聯(lián)引用可以解決這個問題。
6、減少域名
每次請求新域名都需要進(jìn)行通過DNS查找不同的域名,且DNS緩存無法發(fā)揮作用。因此應(yīng)該盡量將站點(diǎn)組織在一個統(tǒng)一域名下,避免使用過多子域名,網(wǎng)站保留一個主域名即可。
7、 壓縮你的JavaScript
使用JS壓縮工具壓縮你的JavaScript吧,很有效哦??纯磈Query的兩個不同的發(fā)行版本就知道區(qū)別了:
jquery-1.6.2.js jQuery未壓縮代碼大小,230KB
jquery-1.6.2.min.js 壓縮版jQuery代碼大小:89.4KB
8、 盡量http避免重定向
一次重定向意味著在你真正訪問到想要看到的頁面前加入了一輪額外的HTTP請求(客戶端發(fā)起HTTP請求→HTTP服務(wù)器返回重定向響應(yīng)→客戶端對新URL發(fā)起請求→HTTP服務(wù)器返回內(nèi)容,下劃線部分為額外的請求),因此消耗更多的時間(也就給人反應(yīng)更慢的感覺)。因此除非必要,不要隨意使用重定向,如果有下面的需求,可以采用重定向。
8.1. 避免URL失效
舊站點(diǎn)遷移后,為了避免舊的URL失效,通常將對舊URL的請求重定向至新系統(tǒng)的對應(yīng)地址。
8.2. URL美化/偽靜態(tài)
在可讀性好的URL與實際資源URL之間轉(zhuǎn)換
9、移除重復(fù)的腳本
不要在一個頁面中重復(fù)引入相同的腳本。例如腳本B和C都依賴于A,那么在使用了B和C的頁面中就有可能存在對A的重復(fù)引用。解決方法,對于簡單的站點(diǎn)手動檢查依賴性,消去重復(fù)引入;對于復(fù)雜的站點(diǎn)則需要構(gòu)建自己的依賴管理/版本控制機(jī)制。
總結(jié):在網(wǎng)站制作時候把握上面9個原則,可以讓我們前端頁面速度和響應(yīng)速度更快,網(wǎng)站建設(shè)中是一門比較精細(xì)的技術(shù),希望從事前端開發(fā)的網(wǎng)頁設(shè)計師可以知道更多的基礎(chǔ)知識。