一、網(wǎng)絡(luò)優(yōu)化
YSlow有23條規(guī)則,中文可以參考這里。這幾十條規(guī)則最主要是在做消除或減少不必要的網(wǎng)絡(luò)延遲,將需要傳輸?shù)臄?shù)據(jù)壓縮至最少。
1)合并壓縮CSS、JavaScript、圖片,靜態(tài)資源CDN緩存
通過(guò)構(gòu)建工具Gulp,可以在開(kāi)發(fā)的時(shí)候就將合并壓縮的事情一起做掉。
之所以要做合并壓縮是因?yàn)椋篐TTP 1.x不允許一個(gè)連接上的多個(gè)響應(yīng)數(shù)據(jù)交錯(cuò)到達(dá)(多路復(fù)用),因而一個(gè)響應(yīng)必須完全返回后,下一個(gè)響應(yīng)才會(huì)開(kāi)始傳輸。
也就是說(shuō)即使客戶端同時(shí)發(fā)送了兩個(gè)請(qǐng)求,而且CSS資源先準(zhǔn)備就緒,服務(wù)器也會(huì)先發(fā)送HTML響應(yīng),然后再交付CSS。
使用CDN是為了讓用戶訪問(wèn)的時(shí)候能用最近的資源,減少來(lái)回傳輸時(shí)間。
HTTP2.0改進(jìn)了HTTP1.x很多方面。
2)CSS放頂部,JavaScript放底部
CSS可以并行下載,而JavaScript加載之后會(huì)造成阻塞。
但凡事還是會(huì)有例外,如果把行內(nèi)腳本放在樣式表之后,會(huì)明顯地延遲資源的下載(結(jié)果是樣式表下載完成并且行內(nèi)腳本執(zhí)行完畢時(shí),后續(xù)資源才能開(kāi)始下載)。
這是因?yàn)樾袃?nèi)腳本可能含有依賴于樣式表中樣式的代碼,比如