雪碧圖技術,合併多個圖片文件爲一個,使用background-position來使用;css
合併多個css文件爲單個,合併多個js腳本爲一個;劣勢在於多個頁面中的公共腳本和樣式就沒法緩存到客戶端了;前端
使用base64編碼展現圖片,這個網址能夠轉換圖片;不過不推薦在用戶屢次訪問的頁面中,由於雖然不須要從服務器get代碼,可是也沒法緩存在客戶端,會致使每次訪問都要重複渲染。10k以上的圖片base64碼就會很龐大,給瀏覽器解析都形成很大壓力
web
把小塊的css,js腳本寫在頁面中,雖然可能增長了代碼量,不利於維護,可是,能夠有效下降http請求數量。gulp
使用http-equiv="expires"元標籤,設置在某一時刻過時,以前一直從緩存中獲取頁面文件。瀏覽器
content="Sunday 26 October 2008 01:00 GMT"緩存
壓縮腳本或者樣式文件,gulp,grunt等(混淆變量函數名)服務器
圖片壓縮低品質gif,中jpg,高png,還有淘寶的webp異步
使用Font Awesome來加載頁面中的小圖標,原理是用@font-face來下載一個小的文字ui包,將圖標用文字形式展示。svg
使用svg圖片格式,圖片做爲代碼引入,極大下降文件大小。函數
若是用戶在其餘的頁面中已經下載了這個cdn中的文件,就無需下載便可訪問,減小了對服務器訪問的壓力,並且多個域名中下載,提升了效率(firefox只容許一個域名中異步下載2個腳本)。
固然了,cdn也帶來了dns解析的壓力。若是引入了多個cdn的文件,會致使解析dns而陷入等待中。
最好的方式一個頁面是從兩個域(cdn域和站點域)中加載所須要的文件。
腳本下載完畢後執行期間會引發執行阻塞,推薦使用requireJS(AMD規範) 或 seaJS(CMD規範) 來異步加載腳本並處理模塊依賴的,前者將「依賴前置」(預加載全部被依賴腳本模塊,執行速度最快),後者走的「依賴就近」(懶加載被依賴腳本模塊,請求腳本更科學),你能夠根據項目具體需求來選擇最合適的。
就是常說的lazyload,在首屏加載完成後再緩慢加載後面的內容。例如:
<img src="data:image/png;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" data-src="a.jpg">
頁面初次加載時,用的是base64編碼,或者使用一張很小的load.gif,data-src中是真實的地址,以後在頁面加載完成以後替換該圖片地址。
function init() { var imgDefer = document.getElementsByTagName('img'); for (var i=0; i<imgDefer.length; i++) { if(imgDefer[i].getAttribute('data-src')) { imgDefer[i].setAttribute('src',imgDefer[i].getAttribute('data-src')); } } } window.onload = init;
應當把用戶須要看見的東西放在首要加載的地方,至於那些次要的能夠放在後面加載。