1. 程式人生 > >如何進行web前端效能優化

如何進行web前端效能優化

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

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

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

【如何進行web前端效能優化】

 

大家好,我是IT修真院深圳分院第9期的學員許永堅,一枚正直純潔善良的前端程式設計師,今天給大家分享一下,修真院官網JS任務10,深度思考中的知識點——如何進行web前端效能優化

A.  背景介紹

使用者訪問網頁的等待時間,有80%是發生在瀏覽器前端,特別是頁面和頁面中各種元素(圖片、CSS、JavaScript、 flash…)的下載之上,因此進行前端優化很有必要。

B.  知識剖析

2.1 初次訪問

1)減少一個頁面訪問所產生的http連線次數

儘量簡潔的頁面設計,最大程度減少圖片的使用,通過放棄一些不必要的頁面特效來減少javascript的使用。

使用一些優化技巧,比如利用圖片的背景位移減少圖片的個數;image map技術;Sprites圖;使用Inline images將css圖片捆綁到網頁中。

儘量合併js和css檔案,減少獨立檔案個數。

2)使用gzip壓縮網頁內容

使用gzip來壓縮網頁中的靜態內容,能夠顯著減少使用者訪問網頁時的等待時間。主流的web伺服器都支援或提供gzip壓縮,如果使用apache伺服器,只需要在配置檔案中開啟 mod_gzip(apache1.x)或mod_deflate(apache2.x)即可。

使用gzip壓縮都能夠顯著提高伺服器效率並減少頻寬支出,注意圖片內容本身已經是壓縮格式了,務必不要再進行壓縮。

3)將CSS放在頁面頂端,JS檔案放在頁面底端

CSS的引用要放在html的頭部header中,JS檔案引用盡量放在頁面底端標籤的後面,主要的思路是讓核心的頁面內容儘早顯示出來

4)使JS檔案內容最小化

使用一些javascript壓縮工具對js指令碼進行壓縮,去除其中的空白字元、註釋,最小化變數名等。

5)儘量減少外部指令碼的使用,減少DNS查詢時間

不要在網頁中引用太多的外部指令碼,首先,一次dns的解析過程會消耗20-120毫秒的時間;其次,如果在頁面中引用太多的外部檔案(如各種廣告、聯盟等程式碼),可能會因為外部檔案的響應速度而將你的網站拖得很慢。瀏覽器一般只能並行處理同一域名下的兩個請求,而對於不同子的域名則不受此限制,因此適當將本站靜態內容(css,js)放在其他的子域名下(如 static.xxx.com)會有利於提高瀏覽器並行下載網頁內容的能力。

如果必須引用外部檔案,儘量將這些指令碼放在頁尾,可以使用CDN加速和DNS域名解析加速。

2.2 經常訪問

1)在header中新增過期時間(Expires Header)

在header中給靜態內容新增一個較長的過期時間,這樣可以使使用者今後訪問只讀取快取中的檔案,而不會與伺服器產生任何的互動。

這樣做存在一些問題,當圖片、CSS和js檔案更新時,使用者如果不重新整理瀏覽器,就無法獲得此更新。這樣,我們在對圖片、css和js檔案修改時,必須要進行重新命名,才能保證使用者訪問到最新的內容。這可能會給開發造成不小的麻煩,因為這些檔案可能被站點中的許多檔案所引用。

flickr提出的解決辦法是通過url rewrite使不同版本號的URL,事實上指向同一個檔案,因為url級別的操作效率是很高的,可以給開發過程提供不少便利。

瀏覽器訪問url時的工作機制:

第一次訪問url時,使用者從伺服器段獲取頁面內容,並把相關的檔案(images,css,js…)放在快取記憶體中,也會把檔案頭中的expired time,last modified, ETags等相關資訊也一同保留下來。

使用者重複訪問url時,瀏覽器首先看快取記憶體中是否有本站同名的檔案,如果有,則檢查檔案的過期時間;如果尚未過期,則直接從快取中讀取檔案,不再訪問伺服器。

如果快取中檔案的過期時間不存在或已超出,則瀏覽器會訪問伺服器獲取檔案的頭資訊,檢查last modifed和ETags等資訊,如果發現本地快取中的檔案在上次訪問後沒被修改,則使用本地快取中的檔案;如果修改過,則從伺服器上獲取最新版本。

2)將css和js檔案放在獨立外部檔案中引用

將css和js檔案放在獨立檔案中,這樣它們會被單獨快取起來,在訪問其他頁面時可以從瀏覽器的快取記憶體中直接讀取。

3)去掉重複的指令碼

在IE中,包含重複的js指令碼會導致瀏覽器的快取不被使用。

4)避免重定向的發生

除了在header中人為的重定向之外,網頁重定向常在不經意間發生,被重定向的內容將不會使用瀏覽器的快取。比如使用者在訪問www.xxx.com,伺服器會通過301轉向到www.xxx.com/,在後面加了一個“/”。如果伺服器的配置不好,這也會給伺服器帶來額外的負擔。通過配置apache的 alias或使用mod_rewrite模組等方法,可以避免不必要的重定向。

C.  常見問題

1.     效能魔方如何使用?

2.     sprite是什麼?

3.     效能測試重要嗎?

D.  解決方案

1.效能魔方如何使用?

http://www.mmtrix.com/,點選‘立即體驗’,然後複製連結

2.sprite是什麼?

雪碧圖,將圖片合成起來使用background來定位。

3.效能測試重要嗎?

重要。

E.  編碼實戰

F.  拓展思考

幾種不常用的方式:使用CDN分發機制、避免CSS表示式、避免使用ETags

G.   參考文獻

參考一:如何優化Web網站效能?

參考二:如何在nginx上使用gzip?

參考三:gzip nginx官網

參考四:效能魔方的使用

參考五:效能優化指南-知乎

參考六:移動H5前端效能優化指南

H.  更多討論

1.效能魔方如何使用?

http://www.mmtrix.com/,點選‘立即體驗’,然後複製連結

2.sprite是什麼?

雪碧圖,將圖片合成起來使用background來定位。

3.效能測試重要嗎?

重要。

I.   鳴謝

今天的分享就到這裡啦,歡迎大家點贊、轉發、留言、拍磚~

 

 

PPT連結 視訊連結

 

 

 

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

 

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