幾乎全部的開發者都會面臨着開發的網站存在加載問題,想要加快網頁的加載速度。前端的頁面更須要在性能優化上下功夫,只有這樣才能實現更好的用戶體驗。本文從構建、瀏覽器渲染、緩存、PWA、服務端優化等多方面,梳理前端性能優化的技術點、綜合分析技術的原理,根據不一樣的業務場景選擇合適的性能優化點進行應用,最終爲你的網站帶來顯著的速度提高和總體性能提高。css
先看一下早期CS架構的開發與部署過程html
再看一下如今BS架構的開發與部署過程前端
從地址欄輸入url到頁面渲染出來,整個過程經歷了什麼(一道經典的面試題。。)讓咱們用一張圖來了解整個過程:node
從上圖這個請求過程,咱們能夠思考一下其中一些潛在的性能優化點:ios
綜上,咱們得出深刻理解http請求過程
是前端性能優化的核心web
HTML代碼壓縮就是壓縮這些在文本文件中有意義,可是在HTML中不顯示
的字符,包括空格
、製表符
、換行符
等,還有一些其餘意義的字符,如HTML註釋
也能夠被壓縮。面試
HTML代碼壓縮的意義:
以google爲例,google的流量,佔到整個互聯網的40%,2016年全球網絡流量達到1.3ZB(1ZB=10^9TB)
,那麼google在2016年的流量就是1.3ZB*40%,若是google每1MB請求減小一個字節,每一年能夠節省流量近500TB
。算法
那麼如何進行HTML的壓縮呢?後端
如何進行css壓縮:瀏覽器
如何進行js壓縮和混亂:
可是文件合併也存在它本身的問題:
解決方案:
如何進行文件合併:
區別主要仍是文件大小和色彩的豐富程度
png8
:256色 + 支持透明png24
:2^24色 + 不支持透明png32
:2^24色 + 支持透明每種圖片格式都有本身的特色,針對不一樣的業務場景選擇不一樣的圖片格式很重要。
先看一下四種經常使用圖片格式的各自特色吧:
jpg
有損壓縮,壓縮率高,不支持透明png
支持透明,瀏覽器兼容好webp
壓縮程度更好,在ios webview有兼容性問題svg
矢量圖,代碼內嵌,相對較小,圖片樣式相對簡單的場景根據各自不一樣的特色獲得適用的業務場景分別爲:
jpg
:大部分不須要透明圖片的業務場景png
:大部分須要透明圖片的業務場景webp
:安卓所有svg
:圖片樣式相對簡單的業務場景,如iconcss雪碧圖
image inline
矢量圖
在安卓下使用webp
webp的優點體如今它具備更優的圖像數據壓縮算法,能帶來更小的圖片體積,並且擁有肉眼識別無差別的圖像質量;同時具有了無損和有損的壓縮模式、Alpha透明以及動畫的特性,在JPEG和PNG上的轉化效果都很是優秀、穩定和統一。
先用一張圖來理解html頁面加載渲染的過程:
html渲染過程當中有如下特色:
順序執行、併發加載
(1)詞法分析 (2)併發加載 (3)併發上限
是否阻塞
依賴關係
引入方式