在App的開發過程當中,隨着業務的發展,愈來愈多的公司會選擇內嵌 WebView,可是便利性的同時,WebView 的性能卻有着很大的問題,備受爭議。 做爲移動開發者應該從哪些方面去優化webView就一個很值得研究的話題。前端
咱們從App中打開一個網頁,到網頁所有加載和渲染和顯示完展示出來所須要花費得時間要比native長很多,這中間經歷的階段大體以下:web
在這幾個階段中網頁會經歷從無反饋、白屏、正在加載,對用戶的使用體驗是不好的。後端
要對webView進行性能優化 應該針對性的對以上幾個階段所消耗的時間進行優化。瀏覽器
當在App中第一次打開一個網頁,系統首先作的並非直接創建鏈接,而是啓 動瀏覽器內核。因此第一次webView的初始化要花費大量時間。緩存
提早初始化webview能夠分爲:性能優化
當App剛啓動時就初始化全局webView並隱藏,當用戶訪問了webView時,直接使用這個 webView加載對應網頁。缺點是須要額外消耗內存。還有須要webView切換時須要清除頁面痕跡,容易形成內存泄漏。服務器
App啓動後。在webView的緩衝池初始化多個webView。須要加載網頁時能夠去緩衝池中去取出新的webView。不須要時就能夠直接銷燬,同時初始化新的webView放進緩衝池中。缺點是相比而言須要更大的額外內存消耗。可是確保減小webView初始化消耗的時間和下降清除頁面所形成的內存泄漏網絡
在初始化的同時,經過 Native 來完成一些網絡請求等過程,而後在回傳給WebView,使得 WebView初始化不是徹底的阻塞後續過程。框架
在創建鏈接過程當中主要消耗時間:性能
一般狀況下,CSS 不會阻塞 HTML 的解析,但若是 CSS 後面有 JS,則會阻 塞 JS 的執行直到 CSS 加載完成(即使 JS 是內聯的腳本),從而間接阻塞 HTML 的 解析。
1.CSS 的加載會在 HTML 解析到 CSS 的標籤時開始,因此 CSS 的標籤要盡 量靠前。 2.可是,CSS 連接下面不能有任何的 JS 標籤(包括很簡單的內聯 JS),不然會 阻塞 HTML 的解析。 3.若是必需要在頭部增長內聯腳本,必定要放在 CSS 標籤以前。