web前端項目優(yōu)化

為什么需要項目優(yōu)化

在互聯網快速發(fā)展的今天,在實現完功能之后,項目優(yōu)化是一個被經常提到的話題。很多項目會在開發(fā)排期中留大量時間去做一輪又一輪的性能優(yōu)化,就是為了讓頁面盡可能早的到達用戶,提高交互的流暢程度。

在系統(tǒng)可利用系統(tǒng)資源有限的大背景下,3秒呈現內容的原則下,項目優(yōu)化顯得格外重要。

每減少0.1秒加載速度可能會給你帶來幾百甚至幾千的用戶活躍;每減少100K的內容請求可能會給你帶來幾千甚至幾萬的的服務端費用;每提高10%的交互流暢度可能給你帶來幾萬甚至幾十萬的銷售額。

于情于理,我們都需要去了解,掌握和使用網站優(yōu)化這項必備技能。

雅虎的網站優(yōu)化準則

由之前的十四條增加到三十五條,劃分為七個模塊Content,Server,Cookie,Css,Javascript,Images,Mobile

國內還可以找到十四條的譯文?傳送門

常見優(yōu)化方法

從資源請求數量+代碼執(zhí)行效率兩個角度來考慮

DOM結構

? ? 1.樣式表放在頭部,防止白屏和閃屏

? ? 2.JS腳本放在底部或異步獲取,防止阻塞資源加載

? ? 3.使用語義化標簽,優(yōu)化精簡DOM結構

? ? 4.減少DOM操作頻率

? ? 5.減少重繪與回流

JS腳本

? ? 1.優(yōu)化腳本結構,移除重復的腳本

? ? 2.模塊就近加載(CMD)

? ? 3.按需加載加載組件和路由

? ? 4.圖片懶加載,列表分頁

? ? 5.使用節(jié)流與防抖減少事件觸發(fā)頻率

? ? 6.盡量使用CSS動畫代替js動畫,開啟硬件加速

資源打包上線

? ? 1.使用打包構建工具(webpack)清除注釋,壓縮頁面資源,js、css、html、圖片、字體等等

? ? 2.混淆js代碼

? ? 3.分離非業(yè)務邏輯相關vendor依賴,使用長緩存緩存和CDN分發(fā)網絡

服務器優(yōu)化

? ? 1.減少Http請求,合并頁面資源,js,css單一入口。js特殊可以分為兩個文件,一個業(yè)務邏輯,一個非業(yè)務邏輯

? ? 2.把小圖標合成雪碧圖,不太適用經常更新的移動端開發(fā)

? ? 3.把小的圖片,字體等資源base64化

? ? 4.開啟GZip壓縮,減少資源傳輸大小

? ? 5.使用強緩存和協商緩存,減少資源重復請求

Vue中可以優(yōu)化的點?

? ? 1.Vue庫dist里面的Runtime-only比Runtime+Compiler小30%

? ? 2.Vue的計算屬性會根據依賴的data進行緩存

? ? 3.keep-alive可以緩存常用組件

? ? 4.Vuex中的getter也會根據依賴的state進行緩存

? ? 5.v-for中唯一key的使用

? ? 6.Vue全局錯誤處理errorHandle

? ? 7.Vue路由懶加載

? ? 8.Vue組件動態(tài)加載

React中可以優(yōu)化的點

? ? 1.在constructor改變this指向代替箭頭函數和render內綁定this,避免函數作為props帶來不必要的rerender

? ? 2.shouldComponentUpdate,減少不不必要的rerender

? ? 3.PureComponent高性能組件只響應引用數據的深拷貝

? ? 4.使用唯一key優(yōu)化list diff

? ? 5.合并setState操作,減少虛擬dom對比頻率

? ? 6.React路由動態(tài)加載react-loadable

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容