參考:http://www.javashuo.com/article/p-vhrqdgxj-bx.html、站長之家:http://www.chinaz.com/tags/Webqianduanxingnengyouhua.shtmljavascript
一、性能優化的重要性
研究代表:用戶最滿意的打開網頁時間是2-5秒,若是等待超過10秒,99%的用戶會關閉這個網頁。列舉一組數據:Google網站訪問速度每慢400ms就致使用戶搜索請 求降低0.59%;Amazon每增長100ms網站延遲將致使收入降低1%;雅虎若是有400ms延遲會致使流量降低5-9%。網站的加載速度嚴重影響了用戶體驗,也決定了這個網站的生死存亡。css
只有10%~20%的最終用戶響應時間花在了下載HTML文檔上(即從Web服務器獲取HTML文檔並傳送到瀏覽器的),其他的80%~90%時間花在了下載頁面中的全部組件上。html
進行頁面優化的方法以下:java
二、減小HTTP請求達到性能優化
上面說到80%~90%時間花在了下載頁面中的全部組件進行的HTTP請求上。所以,改善響應時間最簡單的途徑就是減小HTTP請求的數量次數jquery
2.一、使用字體圖標
在能夠大量使用字體圖標的地方咱們能夠儘量使用字體圖標,字體圖標能夠減小不少圖片的使用,從而減小http請求,字體圖標還能夠經過CSS來設置顏色、大小等樣式,何樂而不爲。web
2.二、合併腳本和樣式表
將多個樣式表或者腳本文件合併到一個文件中,能夠減小HTTP請求的數量從而縮短效應時間。瀏覽器
不過合併全部的樣式文件或者腳本文件可能會致使在一個頁面加載時加載了多於本身所須要的樣式或者腳本,對於只訪問該網站一個(或幾個)頁面的人來講可能致使反而增長了下載量。緩存
2.三、CSS Sprites技術
CSS Sprites在國內不少人叫css精靈,是一種網頁圖片應用處理方式。它容許你將一個頁面涉及到的全部零星圖片都包含到一張大圖中去,而後經過CSS background背景定位技術技巧佈局網頁背景。這樣一來,特別是圖片特別多的網站,若是能用css sprites下降圖片數量,帶來的將是速度的提高。安全
示例代碼:性能優化
<div> <span id="image1" class="nav"></span> <span id="image2" class="nav"></span> <span id="image3" class="nav"></span> <span id="image4" class="nav"></span> <span id="image5" class="nav"></span> </div>
.nav { width: 50px; height: 50px; display: inline-block; border: 1px solid #000; background-image: url('E:/1.png'); } #image1 { background-position: 0 0; } #image2 { background-position: -95px 0; } #image3 { background-position: -185px 0; } #image4 { background-position: -275px 0; } #image5 { background-position: -366px -3px; }
三、使用CDN縮短HTTP請求的時間
若是應用程序web服務器離用戶更近,那麼一個HTTP請求的響應時間將縮短。另外一方面,若是組件web服務器離用戶更近,則多個HTTP請求的響應時間將縮短。CDN(內容發佈網絡)是一組分佈在多個不一樣地理位置的Web服務器,用於更加有效地向用戶發佈內容。在優化性能時,向特定用戶發佈內容的服務器的選擇基於對網絡擁堵的測量。例如,CDN可能選擇具備最短響應時間的服務器,由此縮短了HTTP請求的時間。
四、添加Expires頭來緩存組件
Cache-Control和expires都是在server端配置。
五、壓縮組件
客戶端請求報文中包含Accept-Encoding表示客戶端能識別的壓縮方法,若是客戶端請求報文沒有包含Accept-Encoding首部,服務器就會假設客戶端可以接受任何編碼格式;服務器響應報文中包含Content-Encoding表示採用的壓縮方法。
(然而,一個統計代表,大約有15%的客戶端請求是沒有Accept-Encoding請求的,由於客戶端的一些web代理和PC安全軟件會移除瀏覽器發出的Accept-Encoding,由於監聽未經壓縮的響應會佔用更少的CPU資源,但卻無疑增長了網絡傳輸的時間。)
六、將樣式表放在頭部(實現逐步渲染)
七、將腳本放在底部(避免阻塞DOM解析)
//在DOM加載後,所有內容加載前運行 $(document).ready(function(){}); //在所有內容加載後運行 window.onload = function(){}; // —-js $(window).load(function(){}); //---jquery