WEB站點效能優化實踐(載入速度提公升2s)

2021-07-13 14:38:33 字數 1922 閱讀 8198

進行優化前,關鍵是剖析當前的web效能,找到效能瓶頸,從而確定最需改進的地方;如果精力有限,首先將精力放在能明顯提公升效能的改進點上;

《高效能**建設指南》提出了乙個效能**法則:

由於本文將實施乙個完整的優化流程,所以,我們還是從後台開始;

案例說明:

2個js、乙個頁頭、乙個頁尾;3個css;

型別:部落格類站點;後台邏輯簡單;首頁不到10個sql查詢;

首頁html文件52kb;

第一步:後台優化,啟用頁面快取;

實驗站點首頁後台邏輯並不複雜,不超過10個sql查詢,通過檢視時間線,本站在獲取html文件時,花費的時間不到總響應時間的20%,優化之前沒有使用快取,所有的資料都是從資料庫讀取,這裡,我們使用靜態頁面快取,將首頁整個頁面完全的存放在快取中(關於yii靜態頁面快取的使用,參考這裡);

通過檢視html文件的生成時間來檢測優化效果;

首位元組時間為376ms;html生成的時間大大縮短,後台時間減少了一倍。

優化前:

優化後:

第二步,dns網域名稱解析加速:

dns解析是使用者訪問站點的第一步,在此之前,你的**無法做任何事情;

站點的dns解析時間不應該超過500ms,如果站點原始dns解析時間過長,就該考慮考慮使用第三方解析加速服務;

實驗站點的原始dns解析較慢,平均耗時1017ms,算是非常長的;對於dns加速,可以使用dns網域名稱解析加速服務,本站點採用的國內的一款免費dns加速服務dnspod,效果還不錯,使用後平均耗時降到370ms;

加速前測試:

使用dns網域名稱解析服務

之後的測試:

第三步:使用cdn加速;

注:個人建議,啟用cdn最好放在最後一步,等將站點本身的優化都做完了之後,再啟用cdn可以明顯的看到優化效果。(開啟cdn後,由於有cdn快取的原因,觀測站點的本身的優化就不是很方便了);

第四步,採用多台伺服器提高並行載入量:

第五步,合併指令碼和樣式表;

)。如果使用的yii框架,更有yii整合版(

minscript extension

),簡單幾步的配置,就自動將頁面所有的js和css檔案合併; 關於

minscript extension

的使用,請參考:

第六步,壓縮css/js/html/xml;

不同的web伺服器設定方式有所差別,本站使用的linux/apache,

在web根目錄下的.htaccess檔案中新增以下**即可:

#set compress

addoutputfilter deflate html xml php js css

通過firefox工具可看到,壓縮前,html文件的大小是25kb;合併後的js大小為138kb;

壓縮後,html文件大小為6.2kb。js大小為39.8kb;減少2/3的傳輸時間;

第六步,最大化的減少http請求;

新增expires頭, 啟用靜態內容快取,將jpg、gif等檔案快取;

方法也是在.htaccess中新增:

# image and flash content caching for one month

header set cache-control 「max-age=2592360″

結論

本次優化主要使用的是前端優化,其中大部分規則來自於這本書的指導《高效能**建設指南

》;如果你的web前端部分還沒有充分優化,強烈建議讀讀這本書;

這是一本你只需畫上三小時就能看完,但收穫價值遠遠大於付出的一本書。

WEB站點效能優化實踐

第一步 後台優化,啟用頁面快取 實驗站點首頁後台邏輯並不複雜,不超過10個sql查詢,通過檢視時間線,本站在獲取html文件時,花費的時間不到總響應時間的20 優化之前沒有使用快取,所有的資料都是從資料庫讀取,這裡,我們使用靜態頁面快取,將首頁整個頁面完全的存放在快取中 關於yii靜態頁面快取的使用...

Web前端效能優化 如何提高頁面載入速度

最近參加了兩次前端面試,都提到了頁面優化的問題,所以做個記錄吧!字型圖示 在可以大量使用字型圖示的地方我們可以盡可能使用字型圖示,字型圖示可以減少很多的使用,從而減少http請求,字型圖示還可以通過css來設定顏色 大小等樣式。將樣式表放在頭部對於實際頁面載入的時間並不能造成太大影響,但是這會減少頁...

Web站點優化

許多 web站點在初建時,由於需求不明確,需求變化太頻繁,以及追求進度等諸多原因,第一版的站點多是凌亂的,難以維護和管理的。為此在站點進入穩定維護期的時候,進行優化是十分有必要的。選擇在進入穩定維護期後進行優化,是因為這時需求已經基本明確,需求變化不會太嚴重,又有 既有站點 的經驗與教訓可供參考,而...