一個(gè)網(wǎng)頁中,圖片資源的大小占比是最多的,而且單個(gè)的文件的大小也很可觀。因此,在保證圖片質(zhì)量不變的情況下,盡可能的使用高壓縮率的圖片格式,圖片格式可以按照這個(gè)優(yōu)先級(jí)選擇webp > jpeg > png > bmp。同時(shí)也要根據(jù)圖片展示尺寸來拉取大小最為匹配的圖片資源,不要沒事就把原圖拉下來使用。以前我就遇到過這種情況,一個(gè)196*196大小區(qū)域展示的圖片,它的文件竟然達(dá)到了幾兆,最后才發(fā)現(xiàn)把1960*1960分辨率的原圖拉下來了。
2:開啟網(wǎng)絡(luò)壓縮
大部分瀏覽器在發(fā)出請(qǐng)求時(shí),會(huì)帶上這個(gè)標(biāo)記「Accept-Encoding: gzip, deflate」,表示這個(gè)瀏覽器可以接受以gzip壓縮方式傳輸數(shù)據(jù),如果你的網(wǎng)頁服務(wù)器也支持gzip壓縮數(shù)據(jù),那么數(shù)據(jù)以gzip方式傳輸時(shí),會(huì)減少70~80%的流量。
3:使用瀏覽器緩存
同一個(gè)站點(diǎn)下面的不同頁面,往往都會(huì)復(fù)用一部分資源文件,如果把這些資源文件設(shè)置為可緩存的,那么在刷新或者跳轉(zhuǎn)到另一個(gè)頁面時(shí),都無須再從網(wǎng)絡(luò)拉取相關(guān)資源,這樣就大大加快了網(wǎng)頁的加載速度。
4:減少重定向請(qǐng)求
有的網(wǎng)站對(duì)于不同的終端制作了不同的頁面,比如說在手機(jī)上訪問微博,會(huì)從weibo.com重定向至weibo.cn,每一次重定向都會(huì)導(dǎo)致瀏覽器重新發(fā)起請(qǐng)求,延長加載時(shí)間。對(duì)于這種情況,應(yīng)該盡可能使用響應(yīng)式設(shè)計(jì),一個(gè)weibo.com站點(diǎn)覆蓋至所有終端。
5.使用CDN存儲(chǔ)靜態(tài)資源
CDN是一種靜態(tài)內(nèi)容分發(fā)網(wǎng)絡(luò),它在每個(gè)省,甚至每個(gè)城市都部署有自己的服務(wù)器,用于分發(fā)這些靜態(tài)內(nèi)容,那么當(dāng)某個(gè)城市的用戶要拉取某個(gè)資源時(shí),他會(huì)首選從本地的CDN服務(wù)器上拉取,這樣可以保證他最快速的獲得該資源。據(jù)磚家統(tǒng)計(jì),網(wǎng)絡(luò)資源中有70%的是靜態(tài)資源。這就意味著,有70%的內(nèi)容產(chǎn)生后是不會(huì)變化,那么將它們?nèi)糠旁贑DN上面,可以提升這70%的資源的下載速度。
6.減少DNS查詢次數(shù)
很多人喜歡把不同的圖片掛在不同當(dāng)域名下,比如說圖片A掛在a.pm-teacher.com,圖片B掛在b.pm-teacher.com。當(dāng)一個(gè)網(wǎng)頁同時(shí)使用圖片A和圖片B時(shí),瀏覽器需要查詢兩個(gè)域名,要知道,每次解析域名都是會(huì)浪費(fèi)時(shí)間的,所以盡可能的將全部圖片放在一個(gè)域名
7.壓縮css和js內(nèi)容
這里說的壓縮和第2點(diǎn)并不重復(fù),上面提到的壓縮是不改變文件內(nèi)容的壓縮。而css和js中有大量的空格和變量命名(如hello="hello word";),如果將這些空格去除,并用簡單的字母來代換變量名(如a="hello word";),那么這些css和js原文件的大小也會(huì)縮小,這樣也對(duì)加快拉取速度是有幫助的。