1.減小http請求:javascript
css sprite;css
css、js文件合併壓縮 html
CDN託管前端
網頁Gzip壓縮java
圖片服務器c++
圖片延遲加載算法
小圖標用iconfont 數組
小圖片用base64瀏覽器
data緩存緩存
前端模板 JS+數據,減小因爲HTML標籤致使的帶寬浪費,前端用變量保存AJAX請求結果,每次操做本地變量,不用請求,減小請求次數
var galobalVal = 1; function callFn(info){ //用局部變量緩存全局變量 var localVal = galobalVal ; //do sth ... //將新值賦值回來 galobalVal = localVal ; }
-緩存DOM節點查找的結果, 如 var imgs = doc.getElementByTagName("name")
//document是全局查找 function updateUI(){ var doc = document;//用局部變量 緩存起來 var imgs = doc.getElementByTagName("name");//用局部變量 緩存起來 for (var i = imgs.length - 1; i >= 0; i--) { imgs[i].title = doc.title + " image " + i; } var msg = doc.getElementByTagName("msg"); //用局部變量 緩存起來 msg.innerHTML = "update complete"; }
--------------------如下來自《JavaScript高級程序設計》--------------------------
1.避免沒必要要的屬性查找
算法複雜度O,最快捷的算法是常數值,即O(1),算法越複雜 運行所需時間越長。
查找變量和訪問數組數組元素都是O(1)
訪問對象屬性是O(n),()使用變量和數組都比訪問對象的屬性更有效率,由於必須在原型鏈上對擁有該名稱 的屬性進行一次搜索。屬性越多,屬性查找時間越長
所以一旦屢次用到對象屬性,應該將其存儲在局部變量中,第一次訪問是O(n),但後面都會是O(1)。
2.優化循環
1)減值迭代
2)簡化終止條件,避免屬性查找或其餘O(n),如 i<values.length,在循環時每次都是算一下values.length。能夠改成減值迭代
3)簡化循環體
4)使用後測試循環體
減值迭代:
for (var i = values.length - 1; i >= 0; i--) { var value = values[i] process(value) ; }
後測試循環體:do-while,能夠避免最初終值的計算,運行更快。但需注意確保處理的值至少有一個
var i = values.length - 1; if(i >-1){ do { process(values[i]) ; }while( --i >= 0) }
3.展開循環
當循環次數肯定,消除循環並使用屢次函數調用則更快。
//消除循環 process(values[0]) ; process(values[1]) ; process(values[2]) ;
性能的其餘注意事項:
1.使用原生方法
2.switch語句較快。如果有一系列複雜的if else語句,能夠轉爲switch
3.位運算符較快。 當進行數學運算時,位運算比布爾運算或算術要運算快。取模 邏輯與 邏輯或均可以考慮位運算實現
---------------------
與get請求相比,post請求消耗的資源會更多一些。
從性能角度看,以發送相同的數據計,get請求的速度最多可打到post請求的兩倍。