優化網頁速度的7種方法

周末在傢宅著,刷瞭不少的網頁,發現很多網站都沒有優化它的加載速度,有時打開一個網頁要等待10來秒才能加載完成,雖然網頁內容很不錯,但是給我的第一印象就是慢,不能忍啊!

其實有很多簡單粗暴,又很有療效的優化方法,我覺得有必要給各位產品經理分享一下,好讓你們去督催開發哥哥優化,改善一下網頁的加載體驗~

首先,我們來看下網頁的加載流程。打開一個網頁,會先拉取一個html頁面,然後瀏覽器解析瞭這個html頁面後,會根據頁面的內容,去拉取javascript、css和圖片文件,最終根據這些文件,將頁面渲染出來。

我們可以看到,影響一個網頁展示速度的主要因素不是網頁本身,而是它依賴的一些其它文件。如果優化瞭這些資源的加載速度,那麼網頁展示的速度也就上去瞭。

有哪些簡單粗暴的方法呢?讓我來一一列舉:

1.優化圖片資源的格式和大小

一個網頁中,圖片資源的大小占比是最多的,而且單個的文件的大小也很可觀。因此,在保證圖片質量不變的情況下,盡可能的使用高壓縮率的圖片格式,圖片格式可以按照這個優先級選擇webp > jpeg > png > bmp。同時也要根據圖片展示尺寸來拉取大小最為匹配的圖片資源,不要沒事就把原圖拉下來使用。以前我就遇到過這種情況,一個196*196大小區域展示的圖片,它的文件竟然達到瞭幾兆,最後才發現把1960*1960分辨率的原圖拉下來瞭。

2.開啟網絡壓縮

大部分瀏覽器在發出請求時,會帶上這個標記「Accept-Encoding: gzip, deflate」,表示這個瀏覽器可以接受以gzip壓縮方式傳輸數據,如果你的網頁服務器也支持gzip壓縮數據,那麼數據以gzip方式傳輸時,會減少70~80%的流量。

3.使用瀏覽器緩存

同一個站點下面的不同頁面,往往都會復用一部分資源文件,如果把這些資源文件設置為可緩存的,那麼在刷新或者跳轉到另一個頁面時,都無須再從網絡拉取相關資源,這樣就大大加快瞭網頁的加載速度。

4.減少重定向請求

有的網站對於不同的終端制作瞭不同的頁面,比如說在手機上訪問微博,會從weibo.com重定向至weibo.cn,每一次重定向都會導致瀏覽器重新發起請求,延長加載時間。對於這種情況,應該盡可能使用響應式設計,一個weibo.com站點覆蓋至所有終端。

5.使用CDN存儲靜態資源

CDN是一種靜態內容分發網絡,它在每個省,甚至每個城市都部署有自己的服務器,用於分發這些靜態內容,那麼當某個城市的用戶要拉取某個資源時,他會首選從本地的CDN服務器上拉取,這樣可以保證他最快速的獲得該資源。據磚傢統計,網絡資源中有70%的是靜態資源。這就意味著,有70%的內容產生後是不會變化,那麼將它們全部放在CDN上面,可以提升這70%的資源的下載速度。

6.減少DNS查詢次數

很多人喜歡把不同的圖片掛在不同當域名下,比如說圖片A掛在a.pm-teacher.com,圖片B掛在b.pm-teacher.com。當一個網頁同時使用圖片A和圖片B時,瀏覽器需要查詢兩個域名,要知道,每次解析域名都是會浪費時間的,所以盡可能的將全部圖片放在一個域名下。

7.壓縮css和js內容

這裡說的壓縮和第2點並不重復,上面提到的壓縮是不改變文件內容的壓縮。而css和js中有大量的空格和變量命名(如hello=”hello word”;),如果將這些空格去除,並用簡單的字母來代換變量名(如a=”hello word”;),那麼這些css和js原文件的大小也會縮小,這樣也對加快拉取速度是有幫助的。

不知道你有沒有看出來,上面提到的優化方案的核心就3點:減少請求數、減少資源大小、找最快的服務器。如果你是一個網站的產品經理,快去找你們的開發確認是否有做過類似的優化吧。

【本文原創發佈於人人都是產品經理,未經許可,不得轉載。專欄作傢:給產品經理講技術,微信公眾號(pm_teacher),人人都是產品經理專欄作傢。資深程序猿,專註客戶端開發若幹年,對前端、後臺技術略懂,熱衷於對新的科技領域的探索。】