這篇文章主要說的是網頁性能優化方面的知識,在其中穿插了一些網絡請求與相應的基礎知識。javascript
chrome瀏覽器調試面板上包含了Console面板、Elements面板、Sources面板、Network面板、Timeline面板、Profiles面板、Application面板、Security面板、Audits面板等這些功能面板。css
這些按鈕的功能點以下:html
1.一、network面板(能夠參考文章:http://www.cnblogs.com/ys-ys/p/5625409.html)前端
Network
面板能夠記錄頁面上的網絡請求的詳情信息,從發起網頁頁面請求Request後分析HTTP請求後獲得的各個請求資源信息(包括狀態、資源類型、大小、所用時間、Request和Response等),能夠根據這個進行網絡性能優化。java
右鍵能夠選擇展現的屬性。各類屬性介紹:ajax
Name:請求文件名稱
Method:方法(常見的是get post)
Status:請求完成的狀態
Type:請求的類型
Domain:訪問的域名或者ip地址
remote Address:遠程ip:端口
Initiator:請求源也就是說該連接經過什麼發送(常見的是Parser、Script)
Size:下載文件或者請求佔的資源大小
Time:請求或下載的時間
Waterfall:該連接在發送過程當中的時間狀態軸(咱們能夠把鼠標移動到這些紅紅綠綠的時間軸上,對應的會有它的詳細信息:開始下載時間,等待加載時間,自身下載耗時)chrome
經過點擊某個資源的Name能夠查看該資源的詳細信息,根據選擇的資源類型顯示的信息也不太同樣,可能包括以下Tab信息:瀏覽器
針對上面4個Tab進行詳細講解一下各個功能:緩存
① 查看資源HTTP頭信息安全
在Headers標籤裏面能夠看到HTTP Request URL
、HTTP Method
、Status Code
、Remote Address
等基本信息和詳細的Response Headers
、Request Headers以及Query String Parameters或者Form Data等信息。
② 查看資源預覽信息
在Preview標籤裏面可根據選擇的資源類型(JSON、圖片、文本、JS、CSS)顯示相應的預覽信息。下圖顯示的是當選擇的資源是JSON格式時的預覽信息。
③ 查看資源HTTP的Response信息
在Response標籤裏面可根據選擇的資源類型(JSON、圖片、文本、JS、CSS)顯示相應資源的Response響應內容。下圖顯示的是當選擇的資源是CSS格式時的響應內容。
④ 查看資源Cookies信息
若是選擇的資源在Request和Response過程當中存在Cookies信息,則Cookies標籤會自動顯示出來,在裏面能夠查看全部的Cookies信息。
⑤ 分析資源在請求的生命週期內各部分時間花費信息
在Timing標籤中能夠顯示資源在整個請求生命週期過程當中各部分時間花費信息,可能會涉及到以下過程的時間花費狀況:
TTFB這個部分的時間花費若是超過200ms,則應該考慮對網絡進行性能優化了。
對於普通的網頁訪問,80%的響應時間消耗在前端(Yahoo),動態請求時間佔比較少,優化難度大;靜態請求時間佔比大,優化難度低、效果顯著,且有成熟的優化手段和工具。
參考文檔:https://developer.yahoo.com/performance/rules.html
3.一、使用更少的http請求
頁面加載過程發起一個HTTP頁面請求,發起多個請求獲取頁面資源(css、js、圖片、ajax等)
減小http請求有這樣幾個優勢:
(1) 減小DNS請求所耗費的時間。
(2) 減小服務器壓力。
(3) 減小http請求頭。
優化手段
一、合併文件
方法:合併css、js文件
要點:文件的合併要在項目前期開展,性能優化階段合併容易致使Bug產生
二、合併圖片
方法:將多個圖片合併在一個文件中,採用css技術切分圖片
(切割圖片這裏不是真正的切割,只是用CSS取圖片中的一部分,這樣作的好處就是減小了打開網頁時請求圖片的次數)
3.二、添加Expires頭
<meta http-equiv="expires" content="Sunday 26 October 2010 01:00 GMT" />
添加Expires頭能有效的利用瀏覽器的緩存能力來改善頁面的性能,能在後續的頁面中有效避免不少沒必要要的Http請求,WEB服務器使用Expires頭來告訴Web客戶端它可使用一個組件的當前副本,直到指定的時間爲止。expires用於設定網頁的過時時間,一旦過時就必須從服務器上從新加載.時間必須使用GMT格式。
瀏覽器初次訪問服務器---------------服務器返回200狀態
瀏覽器再次請求服務器時,瀏覽器會先判斷max-age,若是到期則直接請求服務器,不然直接從緩存中取,服務器收到請求後,判斷文件是否被修改過,如果則直接返回200,不然返回304,瀏覽器將從緩存中獲取文件
3.三、使用gzip壓縮
gzip壓縮能夠犧牲較小的CPU資源,對css、js等進行壓縮,節約帶寬資源(對圖片、pdf等已壓縮格式gzip沒法節約帶寬)
Tomcat配置
<Connector port="81" proxyPort="80" protocol="HTTP/1.1「 compression="on"
compressionMinSize="2048" noCompressionUserAgents="gozilla, traviata" compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain,application/javascript" />
Nginx配置
gzip on;
gzip_min_length 1024;
gzip_types text/plain text/css application/x-javascript application/javascript;
3.四、最小化CSS、JavaScript、圖片
一、CSS、Java Script文件壓縮
手段:刪除空格、換行、註釋
工具:JSMin、YUI CSS Compressor
使用壓縮工具能夠減小Javascript和CSS盡一半的文件大小,推薦使用yui壓縮,參考文檔:https://blog.csdn.net/baidu_25343343/article/details/53396756
在線yui壓縮js/css地址:http://ganquan.info/yui/?hl=zh-CN
二、圖片壓縮
手段:在不改變視覺效果下壓縮圖片大小
工具:https://tinypng.com/(單張照片最大支持5M)
圖片壓縮緣由,參考文章:https://blog.csdn.net/newchenxf/article/details/51693753
其餘優化手段:
將CSS和JavaScript獨立成外部文件:
將可複用的css、js獨立成外部文件,在各個頁面共享。減小頁面大小,並利用瀏覽器緩存節約下載帶寬
移除重複的CSS和JavaScript:
浪費下載資源(IE)和CPU時間(IE、FireFox)注:除此以外,還要避免引用不一樣js庫的不一樣版本和含有大量重複內容的css
將CSS放在頂部:
用戶沒必要等待網頁所有下載完,就能夠逐步看到網頁的呈現,增強用戶體驗
將JavaScript放在底部:
腳本下載將會阻塞其餘內容下載
避免CSS Expression:
CSS表達式會消耗CPU資源(網頁滾動、鼠標移動等將觸發屢次計算)、體驗不一致(僅IE5-7支持)
Yslow(讀作Why Slow)是Yahoo發佈的一款插件。能對網站頁面進行分析,並告知如何進行優化。
下載地址:http://yslow.org/
chrome瀏覽器當中添加的拓展程序會默認展現在左上角,點擊YSlow圖標可打開YSlow
點擊Run Test會對當前打開的網頁進行數據分析。
YSlow顯示測試結果的分析,分爲等級、組件、統計信息。你能夠瀏覽這些觀點之間選擇標籤以觀的名字在YSlow標籤的Firebug控制檯。
如下是說明的等級、組件、統計信息。
4.一、等級視圖
查看一個分析,選擇頁面的性能等級標籤或點擊網頁的字母等級在狀態欄這頁紙的底部。
視圖顯示了等級爲網頁的成績單。整個字母等級爲頁面顯示在頂部隨着全面數值的表現。這個頁面是基於22可分級的高性能網頁的規則。這些規則是列在按重要性的順序,從最重要不重要。從 A 級到 F 級,A 級爲最高。
下面是一個等級的例子:
若是頁面與某一個規則無關,則顯示 N/A ,表示不適用。
點擊每一規則,都給出了改進建議。
4.二、組件視圖
分組顯示頁面組件,表格列出組件的信息,點擊 Expand All展開顯示給個分組內各的組件信息。
下面簡要列在組件檢視表:
TYPE:該組件的類型。該網頁是由組成部分的下列類型:doc, js, css, flash, cssimage, image, redirect, favicon, xhr, and iframe.
SIZE(KB):該組件的大小以千字節。
GZIP(KB):該組件的gzip壓縮的大小以千字節。
COOKIE RECEIVED(bytes):字節數在HTTP設置的Cookie響應頭。
COOKIE SENT(bytes):節數的Cookie在HTTP請求報頭
HEADERS:HTTP信息頭,點擊放大鏡查看全面信息。
URL:連接地址
EXPIRES(Y/M/D):日期的Expires頭,屬於緩存設置一種。
RESPONSE TIME (ms):響應時間
ETAG:ETag響應頭,也是緩存設置的一種
ACTION:額外的性能分析
4.三、統計信息視圖
左側圖表顯示是頁面元素在空緩存的加載狀況,右側爲頁面元素使用緩存後的頁面加載狀況。咱們能夠看到,頁面元素緩存後的使頁面的http請求和頁面總大小都減小,從而加快了頁面打開時間。