優化前要了解web基礎知識:
web本質是一個基於B/S架構的GUI軟件
當我們通過網絡進行訪問:是一個動態的,增量的加載靜態資源的過程
瀏覽器的一個請求到返回都經歷了什麼?
整個過程有哪些可以優化的點?
1,dns是否可以通過緩存減少dns的查詢時間
2,網絡請求能否走最近的網絡環境
3,相同的靜態資源能否緩存能否減少http請求的大小
4,減少http請求次數
5,服務端渲染
html,css,js的渲染過程
一、靜態資源
1,html,css,js壓縮,js混淆,文件合合並
解答:具體操作參看webpake:https://mp.csdn.net/mdeditor/84071076#
2、關於圖片
png,jpg,webp等壓縮率,處理,此不贅述,如有特殊處理方式日後補充
二、html,css,js得渲染機制
html得渲染
1,順序執行,併發加載
詞法分析:從上大小解析tag
併發加載:發起資源請求時併發執行得
併發上限:但是併發請求資源有一個上限
2,加載阻塞
3,依賴關係
4,引入方式
css阻塞
1,css在head中需要全部加載完其中內容纔會去進行頁面渲染
2,同時阻塞之後引入得js執行
3,但是css不阻塞js得加載,比如:可能在頁面渲染過程中js有腳本要操作原有css樣式
js阻塞
js直接引入:會阻塞頁面渲染,原因是js可能對文檔結構進行修改
js不阻塞資源得加載:
js順序執行,並且阻塞後續邏輯執行’
懶加載與預加載
懶加載:
方法:圖片進入可視區域請求圖片資源
場景:圖片很多,且頁面很長,
目的:減少在使用時,無效資源的加載
解決:併發加載資源過多,達到併發上限,阻塞js加載,影響功能
預加載:
方法:在使用之前,對靜態資源如圖片進行請求並緩存到用戶終端中提升客戶體驗
原生寫法
庫寫法 PreloadJS