WEB前端性能優化

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

1 瀏覽器訪問優化

1.1減少HTTP請求

      HTTP協議是無狀態的應用層協議,意味着每次HTTP請求都需要建立通信鏈路、進行數據傳輸,而在服務器端,每個HTTP請求都需要啓動獨立的線程去處理。這些通信和服務的開銷很昂貴,減少HTTP請求的數目可有效提高訪問性能。

     減少HTTP的主要手段是合併CSS、合併JavaScript、合併圖片。將瀏覽器一次訪問需要的JavaScript、CSS合併成一個文件,這樣瀏覽器就只需要一次請求。圖片也可以合併,多張圖片合併成一張,如果每張圖片都有不同的超鏈接,可通過CSS偏移響應鼠標點擊操作,構成不同的URL。

1.2使用瀏覽器緩存

      對一個網站而言,CSS、JavaScript、Logo、圖標這些靜態資源文件更新的頻率都比較低,而這些文件又幾乎是每次HTTP請求都需要的,如果將這些文件緩存在瀏覽器中,可以極好地改善性能。通過設置HTTP頭中Cache-Control和Expires的屬性,可設定瀏覽器緩存,緩存時間可以是數天,甚至是幾個月。

      在某些時候,靜態資源文件變化需要及時應用到客戶端瀏覽器,這種情況,可通過改變文件名實現,即更新JavaScript文件並不是更新JavaScript文件內容,而是生成一個新的JS文件並更新HTML文件中的引用。

      使用瀏覽器緩存策略的網站在更新靜態資源時,應採用逐量更新的辦法,比如需要更新10個圖標文件,不宜把10個文件一次全部更新,而是應一個文件一個文件逐步更新,並有一定的間隔時間,以免用戶瀏覽器突然大量緩存失效,集中更新緩存,造成服務器負載驟增,網絡堵塞的情況。

1.3啓用壓縮

      在服務器端對文件進行壓縮,在瀏覽器端對文件解壓縮,可有效減少通信傳輸的數據量。文本文件的壓縮效率可達80%以上,因此HTML、CSS、JavaScript文件啓用GZip壓縮可達到較好的效果。但是壓縮對服務器和瀏覽器產生一定的壓力,在通信帶寬良好,而服務器資源不足的情況下要權衡kaolv。

1.4CSS放在頁面最上面、JavaScript放在頁面最下面

     瀏覽器會在下載完全部CSS之後纔對整個頁面進行渲染,因此最好的做法是將CSS放在頁面最上面,讓瀏覽器儘快下載CSS。JavaScript則相反,瀏覽器在加載JavaScript後立即執行,有可能會阻塞整個頁面,造成頁面顯示緩慢,因此JavaScript最好放在頁面最下面。但如果頁面解析時就需要用到JavaScript,這時放在底部就不合適了。

1.5減少Cookie傳輸

     一方面,Cookie包含在每次請求和響應中,太大的Cookie會嚴重影響數據傳輸,因此哪些數據需要寫入Cookie需要慎重考慮,儘量減少Cookie中傳輸的數據量。另一方面,對於某些靜態資源的訪問,如CSS、Script等,發送Cookie沒有意義,可以考慮靜態資源使用獨立域名訪問,避免請求靜態資源時發送Cookie,減少Cookie傳輸的次數。

2 CDN加速

        CDN(Content Distribute Network ,內容分發網絡)的本質仍然是一個緩存,而且將數據緩存在離用戶最近的地方,使用戶以最快速度獲取數據,即所謂網絡訪問第一跳。由於CDN部署在網絡運營商的機房,這些運營商又是終端用戶的網絡服務提供商,因此用戶請求路由的第一跳就到達了CDN服務器,當CDN中存在瀏覽器請求的資源時,從CDN直接返回給瀏覽器,最短路徑返回響應,加快用戶訪問速度,減少數據中心負載壓力。

       CDN能夠緩存的一般是靜態資源,如圖片、文件、CSS、Script腳本、靜態網頁等,但是這些文件訪問頻度很高,將其緩存在CDN可極大改善網頁的打開速度。

2.1 反向代理

        傳統代理服務器位於瀏覽器一側,代理瀏覽器將HTTP請求發送到互聯網上,而反向代理服務器位於網站機房一側,代理網站Web服務器接受HTTP請求。

         和傳統代理服務器可以保護瀏覽器安全一樣,反向代理服務器也具有保護網站安全的作用,來自互聯網的訪問請求必須經過代理服務器,相當於在Web服務器和可能的網絡攻擊之間建立了一個屏障。

        除了安全功能,代理服務器也可以通過配置緩存功能加速Web請求。當用戶第一次訪問靜態內容的時候,靜態內容就被緩存在反向代理服務器上,這樣當其他用戶訪問改靜態內容的時候,就可以直接從反向代理服務器返回,加速Web請求響應速度,減輕Web服務器負載壓力。事實上,有些網站會把動態內容也緩存在代理服務器上,比如維基百科及某些博客論壇網站,把熱門詞條、帖子、博客緩存在反向代理服務器上加速用戶訪問速度,當這些動態內容有變化時,通過內部通知機制通知反向代理緩存失效,反向代理會重新加載最新的動態內容再次緩存起來。

   此外,反向代理也可以實現負載均衡的功能,而通過負載均衡構件的應用集羣可以提高系統總體處理能力,進而改善網站高併發情況下的性能。

發佈了32 篇原創文章 · 獲贊 9 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章