轉眼又兩個禮拜過去了旬痹,每天的“三見”一見太陽附井、二見星星、三見月亮两残。讓自己的生活緊張而充實永毅,不過總是想著每周一定要抽出時間與那些一樣奮斗在一線的你們分享些什么,那么今天就分享一些做為PM的我們必知的一些基本加速的技巧吧人弓,拿走不謝沼死。
需要指出的是在我們提供的無論是應用還是WEB上,用戶的耐心是絕對有限的崔赌,甚至于“上帝”的耐心只有那么300ms意蛀,所以你的產品一些要快耸别,唯“快”不破,絕對也一定可以用在這里县钥。望你太雨,絕對速度一定要及時,在及格的基礎上越快越好.
1魁蒜、減少http請求數(shù):
用戶在打開一個網頁的時候囊扳,后臺程序響應用戶需求所有的時間并不多,用戶等待的時間主要都浪費在下載網頁元素上了兜看,即HTML锥咸、CSS、Javascript细移、Flash搏予、圖片等等。據(jù)統(tǒng)計弧轧,第增加一個元素雪侥,網頁載入的平均時間就增加40毫秒(寬帶)或250毫秒。為了證明減少HTTP請求數(shù)可以讓世界變得更美好一點精绎。
(1)減少不必要的http請求速缨、例如用CSS圓角代替圓角圖片,減少圖片的使用代乃。
(2)合并文件旬牲,對于文本,可以直接合并內容搁吓。例如將多個JS文件合并為一個原茅,將多個CSS文件合并為一個:對于圖片文件,可以采用樣式表貼圖定位(CSS sprites)的方式將多張圖片拼成一線大圖堕仔。在需要顯示某個圖片的時候通過CSS調用大圖中的一部分顯示擂橘。或者采用圖像區(qū)塊(IMAGE MAPS)的方式將網頁中相鄰的多個圖片(例如導航條中的多個欄目圖片)合并為一個摩骨,然后為它定義多個圖像區(qū)塊通贞,在區(qū)塊上建立鏈接。
(3)優(yōu)化緩存仿吞,對于沒有變化的en D網頁元素滑频,用戶再次訪問的時候沒有必要重新下載捡偏。直接從瀏覽器緩存讀取就可以有效減少HTTP請求數(shù)唤冈。技術層面,增加xpires Header可以告訴瀏覽器一個元素可以緩存的時間長度银伟,設定Etags可以幫助瀏覽器確定緩存中元素是否與服務器端的元素相匹配你虹。
2绘搞、使用內容分發(fā)網絡(CDN,ContentDelivery, Network)
用戶與你網站服務器的接近程度會影響響應時間長短傅物,把網站內容分散到多個夯辖,處于不同地域位置的服務器上可以加快下載速度,內容分發(fā)網絡是由一系列分散到各個不同地理位置上的Web服務器組成的董饰,它根據(jù)和用戶在網絡上的靠近程度來指定某臺服務器響應用戶請求蒿褂。例如,設定擁有最少網絡跳數(shù)(network hogs)和響應速度最快的服務器會被選定卒暂。對于小公司而言啄栓,很難負擔CDN的成本,大型公司可以租用第三方的CDN也祠,甚至自建CDN昙楚。
3、壓縮網頁元素
每個元素越小诈嘿,下載所需的時間就越少堪旧,通過Gzip,一般可以將文本內容減少70%奖亚。通過JSMin和YUI Compressor等工具淳梦,可以將JS文件進一步壓縮,此外昔字,YSlow還提供了一個工具Smush谭跨,it,它可以無損壓縮網頁中所有的圖片元素李滴。
4螃宙、把樣式表放在網頁的HEAD部分
把樣式表(CSS)移到網頁的HEAD部分可以讓頁面盡快開始渲染,用戶所感覺到的載入速度將會更快所坯。
5谆扎、把腳本文件放在網頁底部
把腳本文件JS下載完畢之前,其后面元素的順序顯示將被阻塞芹助,因此把腳本盡量放在底部意味著更多內容能被快速顯示堂湖。腳本引起的第二個問題是它阻塞并行下載數(shù)量,HTTP/1.1規(guī)范建議瀏覽器在每個域名下的并行下載數(shù)不超過2個状土,因此當腳本文件下載時无蜂,只剩下一個下載配額可以下載其他網頁元素。
6蒙谓、把樣式表和腳本放到外部文件中
將樣式表和腳本直接寫入到網頁HTML中斥季,可以減少文件數(shù)量,從而減少HTTP請求數(shù)。酣倾。但是舵揭,這樣做也增加了網頁的大小。綜合來看躁锡,將樣式表和腳本放到外部文件中午绳,在首次瀏覽之后通過緩存來減少HTTP請求數(shù),是更優(yōu)的做法映之。
7拦焚、減少DNS查詢次數(shù)
當我們在瀏覽器中輸入一個域名的時候,瀏覽器首先要查詢DNS(域名解析系統(tǒng))杠输,根據(jù)DNS返回的域名與IP的對應關系來確定要向哪個IP發(fā)送http請求耕漱。一般一次域名解析需要20-120毫秒,減少域名的使用可以有效減少DNS解析所花費的時間抬伺,但是由于每個域名有并行下載數(shù)的限制螟够,Hahool建議使用2-4個域名以獲取DNS解析時間與下載數(shù)的平衡。
8峡钓、緩存Ajax
Ajax同樣也是可以被緩存的妓笙,優(yōu)化緩存,壓縮網頁元素能岩,減少DNS查詢次數(shù)等規(guī)則同樣適用于Ajax
在提升速度時經常被忽視的一個問題是響應寞宫,對于用戶的操作,不管返回結果的絕對速度是快還是慢拉鹃,都要及時響應辈赋。而響應問題之所以普遍存在,是因為很多人都把響應問題歸結為性能問題膏燕,一個按鈕點擊以后沒有響應钥屈,測試團隊、產品經理和研發(fā)團隊首先想到的都是系統(tǒng)的執(zhí)行速度太慢坝辫,認為性能問題解決了篷就,響應問題也就不是問題了,當性能使之可以在0.1鈔內響應用戶需求的時候近忙,的確可以解決響應問題竭业,但很多時候性能提升是無法滿足用戶的需求的。所以我們在日常項目進展過程中及舍,一定要把功能與響應分別來對待未辆。
備注如有轉載請注明:來自于PM產品之顛公眾號