優化是一個持續的過程。因此儘量的不要有人爲的參與。因此能自動化的或者能從架構、框架級別解決的就最更高級別解決。css
這樣即能實現面對開發人員是透明的、不響應,又能確保全部資源都是被優化過的。html
讓資源更可能快的讓用戶看到。前端
結合代理(nginx)來實現。給http添加緩存的時長。nginx
# 須要緩存的靜態資源類型 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css|ico)$ { .... if (-f $request_filename) { expires 1d; break; } }
說明:web
html文件的緩存,要根據具體業務來判斷。由於有些是真實的Html文件。有些是僞靜態,並無真的html文件
也能夠經過cdn來緩存。segmentfault
經過自動化壓縮的工具來實現,儘可能不要有人爲的參與。這樣即能對開發是透明的,不增長複雜度,也能防止由於人爲的因素的遺忘。瀏覽器
建議:glup的插件(jsmin,cssmin,imgmin)緩存
所謂圖片延遲加載,就是每次只加載當前屏幕可見區域的圖片,其他的圖片在用戶滾動頁面到該位置後纔開始加載。這是一項很是實用的技術,減小了併發數,不但減小了服務器的壓力,也下降了頁面的加載時間,目前不少門戶網站都使用了該技術,如騰訊微博的「看看推薦的人」頁面,在該頁面上有幾千個頭像,若是一次性加載所有的圖片,就要耗費比較多的客戶端和服務器端的資源。該功能的實現原理很簡單,就是將頁面上的src替換成其餘標記(如original),在頁面滾動到相應位置後,再將original更改成src。目前有個Jquery插件Jquery.LazyLoad.js能夠實現圖片的延遲加載,並且這個方法也能減小請求數
。性能優化
首屏爲行,重要信息爲先,次要信息異步加載。服務器
動靜域名分離。不傳輸cookie。有不少業務相關的cookie會經過http傳輸。好比登陸後的token等。
網絡請求是很費時。即增長了服務器壓力,也影響用戶使用的性能。
通常思路是經過合併來實現。
有時須要在頁面加載完以前,就對頁面佈局進行定位。
若頁面中的圖片沒指定尺寸,或尺寸與實際圖片大小不符,瀏覽器會在圖片下載完成後再"回溯"該圖片並從新顯示,從而浪費時間。
# 頁面的請求過程 ... 12. 渲染樹一旦有結構模型了,接着就會同步去計算渲染樹節點的佈局位置 13. 一旦計算出來渲染的座標後,又同步去開始渲染 14. 10-13步進行過程當中若是遇到圖片則跳過去渲染下面內容,等待圖片下載成功後會返回來在渲染 ...
因此,若是image若是沒有width
和height
的話,會影響性能。
js的加載方式是阻塞式的。放在最後,等頁面都渲染完了再加載。
嵌套越深,document的構建越慢。
好比說:
也能夠把上面的一些對性能有響應加到規範裏,好比img標籤必須有width和height,不容許css import,嵌套不容許超過3級等等。具體仍是要看前端的規範。最好能有一些自動檢驗規範的工具。好比csshint,或者本身寫一些小工具等。