前端裏面包含的內容是豐富的,它包括HTML,CSS以及JS和圖片等各類各樣的資源。所以前端優化是複雜的和必要的,接下來在文章中爲你們介紹前端性能優化的方法。本文在github會進行更新。javascript
優化的目的
優化的目的在於讓頁面加載的更快,對用戶操做響應更及時,爲用戶帶來更好的用戶體驗,對於開發者來講優化可以減小頁面請求數,可以節省資源。css
網絡優化
- 減小 http 請求數,css,js, image 等文件壓縮合並,合理設置 http 請求緩存。
- 樣式放頭部,腳本放底部。
- 使用 CDN。
- 按需加載,顯示進度條或者 loading
css優化
- 避免使用 CSS 表達式
- 儘量減小CSS選擇器的層級
- 減小 TABLE 佈局
- 移除空的樣式
- 圖片在加載前提早指定寬高或者脫離文檔流,可避免加載後的從新計算致使的頁面迴流;
JS優化
- 減小閉包的使用。過多使用閉包會產生不少不銷燬的內存,內存過多會致使內存溢出。
- 避免使用iframe, iframe 會嵌入其它頁面,父頁面渲染的時候,同時渲染子頁面,渲染進度會變慢。
- 減小 dom 操做,減小頁面重繪和重排。使用 css3 動畫
- 儘量使用事件委託。事件委託能夠給動態元素綁定事件,並且基於事件委託實現,總體性能會比一個一個綁定事件高50%。
- 注意防抖和節流
圖片優化:
- 不用圖片,儘可能用 css3 代替。 好比說要實現修飾效果,如半透明、邊框、圓角、陰影、漸變等,在當前主流瀏覽器中均可以用 CSS 達成。
- 使用矢量圖 SVG 替代位圖。對於絕大多數圖案、圖標等,矢量圖更小,且可縮放而無需生成多套圖。如今主流瀏覽器都支持 SVG 了,因此可放心使用!
- 使用恰當的圖片格式。咱們常見的圖片格式有 JPEG、GIF、PNG。基本上,內容圖片多爲照片之類的,適用於 JPEG。而修飾圖片一般更適合用無損壓縮的 PNG。GIF 基本上除了 GIF 動畫外不要使用。且動畫的話,也更建議用 video 元素和視頻格式,或用 SVG 動畫取代。
- 按照 HTTP 協議設置合理的緩存。
- 使用字體圖標 webfont、CSS Sprites 等。
- 用 CSS 或 JavaScript 實現預加載。WebP 圖片格式能給前端帶來的優化。
- WebP 支持無損、有損壓縮,動態、靜態圖片,壓縮比率優於 GIF、JPEG、JPEG2000、PG 等格式,很是適合用於網絡等圖片傳輸。
圖片懶加載與預加載
圖片懶加載的原理就是暫時不設置圖片的 src 屬性,而是將圖片的 url 隱藏起來,好比先寫在 data-src 裏面,等某些事件觸發的時候(好比滾動到底部,點擊加載圖片)再將圖片真實的 url 放進 src 屬性裏面,從而實現圖片的延遲加載前端
圖片預加載,是指在一些須要展現大量圖片的網站,實現圖片的提早加載。從而提高用戶體驗。經常使用的方式有兩種,一種是隱藏在 css 的 background 的 url 屬性裏面,一種是經過 javascript 的 Image 對象設置實例對象的 src 屬性實現圖片的預加載。相關代碼以下:vue
爲何要將圖片轉爲base64格式
圖片的 base64 編碼就是能夠將一副圖片數據編碼成一串字符串,使用該字符串代替圖像地址;java
-
提高性能: 網頁上的每個圖片,都是須要消耗一個 http 請求下載而來的, 圖片的下載始終都要向服務器發出請求,要是圖片的下載不用向服務器發出請求,base64能夠隨着 HTML 的下載同時下載到本地.減小https請求。webpack
-
加密: 讓用戶一眼看不出圖片內容 , 只能看到編碼。css3
-
方便引用: 在多個文件同時使用某些圖片時, 能夠把圖片轉爲base64格式的文件, 把樣式放在全局中, 好比common.css, 之後在用的時候就能夠直接加類名, 二不須要多層找文件路徑, 會提高效率git
相關文章