1. 程式人生 > >如何進行網站效能優化?

如何進行網站效能優化?

這裡是修真院前端小課堂,每篇分享文從

【背景介紹】【知識剖析】【常見問題】【解決方案】【編碼實戰】【擴充套件思考】【更多討論】【參考文獻】

八個方面深度解析前端知識/技能,本篇分享的是:

【如何進行網站效能優化?    】

 

目錄

 

1.背景介紹

 

2.知識剖析

 

3.常見問題

 

4.解決方案

 

5.編碼實戰

 

6.擴充套件思考

 

7.參考文獻

 

8.更多討論

 

1.背景介紹

網站的訪問量及使用者的永續性其實在一定程度上取決於其效能,如果一個網站響應耗時久,動畫卡頓,佔用大量的cpu等,往往就會導致使用者流失。尤其是app及微信端應用,可以這麼說,如果頁面開啟都要超過4秒,這體驗絕對差。作為一個開發者,是不允許出現這種情況的,那麼該如何提高頁面的效能呢?

 

2.知識剖析

一個網站生成的過程?

 

DNS解析

什麼是DNS解析?當用戶輸入一個網址並按下回車鍵的時候,瀏覽器得到了一個域名。而在實際通訊過程中,我們需要的是一個IP地址。因此我們需要先把域名轉換成相應的IP地址,這個過程稱作DNS解析。

 

發起tcp請求

 

發起HTTP請求

 

負載均衡

當一臺伺服器無法支援大量的使用者訪問時,將使用者分攤到兩個或多個伺服器上的方法叫負載均衡。

 

瀏覽器渲染

瀏覽器根據頁面內容,生成DOM Tree。根據CSS內容,生成CSS Rule Tree(規則樹)。呼叫JS執行引擎執行JS程式碼。 根據DOM Tree和CSS Rule Tree生成Render Tree(呈現樹)根據Render Tree渲染網頁

 

網頁靜態資源載入

以阿里巴巴的淘寶網首頁的logo為例,其url地址為 img.alicdn.com/tps/i2/TB1bNE7LFXXXXaOXFXXwFSA1XXX-292-116.png_145x145.jpg   我們清楚地看到了url中有cdn字樣。   什麼是CDN?如果我在廣州訪問杭州的淘寶網,跨省的通訊必然造成延遲。如果淘寶網能在廣東建立一個伺服器,靜態資源我可以直接從就近的廣東伺服器獲取,必然能提高整個網站的開啟速度,這就是CDN。CDN叫內容分發網路,是依靠部署在各地的邊緣伺服器,使使用者就近獲取所需內容,降低網路擁塞,提高使用者訪問響應速度。

 

網頁靜態資源載入

以阿里巴巴的淘寶網首頁的logo為例,其url地址為 img.alicdn.com/tps/i2/TB1bNE7LFXXXXaOXFXXwFSA1XXX-292-116.png_145x145.jpg   我們清楚地看到了url中有cdn字樣。   什麼是CDN?如果我在廣州訪問杭州的淘寶網,跨省的通訊必然造成延遲。如果淘寶網能在廣東建立一個伺服器,靜態資源我可以直接從就近的廣東伺服器獲取,必然能提高整個網站的開啟速度,這就是CDN。CDN叫內容分發網路,是依靠部署在各地的邊緣伺服器,使使用者就近獲取所需內容,降低網路擁塞,提高使用者訪問響應速度。

 

3.常見問題

如何進行優化

4.解決方案

1.儘可能減少HTTP請求:圖片合併 (css sprites),Js指令碼檔案合併、css檔案合併

 

2.將css放在頁面最上面,將js放在頁面最下面

 

css放在頁面最上面可以防止頁面出現白屏、閃跳的現象,即減少頁面的首屏出現時間。js的下載和執行會阻塞Dom樹的構建(嚴謹地說是中斷了Dom樹的更新),所以script標籤放在首屏範圍內的HTML程式碼段裡會截斷首屏的內容。而且js中可能會對DOM節點進行操作,而這時程式碼是自上向下進行執行的,這樣會造成js對相應的元素操作不了。所以js放在頁面的最下面

 

3.壓縮js和css

 

減少檔案體積,去除不必要的空白符、格式符、註釋(即對程式碼進行格式化)

 

4.使用CDN(內容分發網路)

 

 

5.使用keep-alive

 

 

我們知道HTTP協議採用“請求-應答”模式,當使用普通模式,即非KeepAlive模式時,每個請求/應答客戶和伺服器都要新建一個連線,完成 之後立即斷開連線(HTTP協議為無連線的協議);當使用Keep-Alive模式(又稱持久連線、連線重用)時,Keep-Alive功能使客戶端到服 務器端的連線持續有效,當出現對伺服器的後繼請求時,Keep-Alive功能避免了建立或者重新建立連線。

 

6.非同步載入:減輕網頁阻塞

 

7.減少網頁重新整理:部分載入頁面,如使用ajax或angular路由

 

8.懶載入

 

當訪問一個頁面的時候,先把img元素或是其他元素的背景圖片路徑替換成一張大小為1*1px圖片的路徑(這樣就只需請求一次),只有當圖片出現在瀏覽器的可視區域內時,才設定圖片正真的路徑,讓圖片顯示出來。這就是圖片懶載入。

 

5.編碼實戰

6.擴充套件思考

有什麼幫助我們優化效能的工具

Audits 和 Chrome 效能外掛

 

https://www.jianshu.com/p/36165e678c25

 

7.參考文獻

https://blog.csdn.net/dataiyangu/article/details/79946416

 

8 更多討論

1.減少HTTP請求次數同時又可能保持頁面內容豐富的技術有哪些。

    1.合併檔案是通過把所有的指令碼放到一個檔案中來減少HTTP請求的方法,如可以簡單地把所有的CSS檔案都放入一個樣式表中。當指令碼或者樣式表在不同頁面中使用時需要做不同的修改,這可能會相對麻煩點,但即便如此也要把這個方法作為改善頁面效能的重要一步。

    2.CSS Sprites是減少影象請求的有效方法。把所有的背景影象都放到一個圖片檔案中,然後通過CSS的background-image和 background-position屬性來顯示圖片的不同部分;

    3圖片地圖是把多張圖片整合到一張圖片中。雖然檔案的總體大小不會改變,但是可以減少HTTP請求次數。圖片地圖只有在圖片的所有組成部分在頁面中是緊挨在 一起的時候才能使用,如導航欄。確定圖片的座標和可能會比較繁瑣且容易出錯,同時使用圖片地圖導航也不具有可讀性,因此不推薦這種方法;

   4.內聯影象是使用data:URL scheme的方法把影象資料載入頁面中。這可能會增加頁面的大小。把內聯影象放到樣式表(可快取)中可以減少HTTP請求同時又避免增加頁面檔案的大小。但是內聯影象現在還沒有得到主流瀏覽器的支援。

減少頁面的HTTP請求次數是你首先要做的一步。這是改進首次訪問使用者等待時間的最重要的方法。如同Tenni Theurer的他的部落格Browser Cahe Usage – Exposed!中所說,HTTP請求在無快取情況下佔去了40%到60%的響應時間。讓那些初次訪問你網站的人獲得更加快速的體驗吧!

 

2.為什麼要網站效能優化

網站前端的使用者體驗決定了使用者是否想要去使用網站的功能,而網站的功能決定了使用者是否會一票否決前端體驗。</p>

不僅僅如此,如果前端優化得好,他可以為企業節約成本

3.常用方法

一般說來,web前端指網站業務邏輯之前的部分,包括瀏覽器載入、網站檢視模型、圖片服務、CDN服務等,主要優化手段有瀏覽器訪問、使用反向代理才、CDN等。

 

 

PPT連結 視訊連結

 

更多內容,可以加入IT交流群565734203與大家一起討論交流

這裡是技能樹·IT修真院:https://www.jnshu.com,初學者轉行到網際網路的聚集地