欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

iOS?WKWebView秒開方案實戰(zhàn)記錄

 更新時間:2021年12月10日 10:59:23   作者:鐘環(huán)  
從iOS8開始,就引入了新的瀏覽器控件WKWebView,用于取代UIWebView,下面這篇文章主要給大家介紹了關(guān)于iOS?WKWebView秒開方案的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下

前言

WKWebView 秒開方案,不僅需要端上優(yōu)化,也需要前后端配合,我們業(yè)務(wù)前期在UIWebView上已經(jīng)通過各種優(yōu)化達到了秒開,但是由于蘋果2020年12月份就不允許上架UIWebView,所以我們緊急切換到WKWebView,但由于WKWebView在啟動初始化的時候表現(xiàn)還是不如人意,我們的目標是低端機型至少大部分頁面也能秒開。經(jīng)過一系列的優(yōu)化操作,實現(xiàn)效果和數(shù)據(jù)都是非常可觀的。

秒開流程圖

秒開方案

1、模板下載。

2、首圖預(yù)加載。

3、正文列表body預(yù)取。

4、CDN預(yù)加載。

5、雙緩存池(目前一共不超過8個):一個負責feed流列表滾動停止時異步執(zhí)行js預(yù)熱;一個負責進入文章后準備好一個干凈的WKWebview供下一次未命中秒開WKWebview使用。

6、點擊cell命中預(yù)熱好的秒開WKWebview,則進行預(yù)熱下一篇文章,這樣提高秒開率。

7、initpage預(yù)熱好的WebView需要先放在屏幕最右側(cè)隱藏,在進入后顯示并重設(shè)frame回歸正常視圖中。

8、feed流預(yù)熱的WebView通過initPage傳false參數(shù)、進入文章頁后的WebView通過initPage傳true參數(shù),為保證不會刷新跳動,模板中有設(shè)置flag確保一次initPage

9、動態(tài)js回填方案:load模板 → 成功會收到前端橋接Ready狀態(tài) → 客戶端收到Ready狀態(tài)會進行initPage操作,此時只是靜態(tài)加載頁面渲染顯示給用戶看的界面,不會觸發(fā)任何網(wǎng)絡(luò)或其他模板加載,initPage成功后會回調(diào)init狀態(tài) → 客戶端收到init狀態(tài)會進行執(zhí)行showPage操作,表示已經(jīng)進入頁面需要繼續(xù)加載好所有未加載好的邏輯,例如圖片渲染、網(wǎng)絡(luò)請求、模板加載等,showPage成功后前端回調(diào)show狀態(tài) → 客戶端仍為頁面已經(jīng)加載完成,處理加載完成后的邏輯,例如打點上報等

10、全局并沒有持有WKWebview不釋放,而是只要進入文章頁就會預(yù)創(chuàng)建下次需要預(yù)熱的WKWebview,保證每次的WKWebview都是干凈無歷史痕跡,在dealloc方法中會釋放雙緩存池當前加載的WebView。

其中initpage和showPage等都是前端處理相關(guān)邏輯回調(diào)給客戶端狀態(tài),客戶端拿到狀態(tài)進行下一步操作。

技術(shù)數(shù)據(jù)

Item 端到端平均耗時 端到端p90耗時
對照組 1210 ms 2800 ms
實驗組 780 ms 1800 ms

秒開效果對比

低端機型:真機6P,12.4.5系統(tǒng)

優(yōu)化前線上UIWebview展示:

WKWebview展示:

WKWebView究竟好在哪里呢?

  1. 內(nèi)存開銷更小
  2. 內(nèi)置手勢
  3. 支持更多H5特性
  4. 有Safari相同的JavaScript引擎
  5. 提供更多屬性,比如加載進度、標題、準確的得到頁面數(shù)等等
  6. 提供了更精細的加載流程回調(diào)(當然相比UIWebView看起來也更麻煩一些,畢竟方法多了)

總結(jié)

到此這篇關(guān)于iOS WKWebView秒開方案的文章就介紹到這了,更多相關(guān)iOS WKWebView秒開內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺談iOS開發(fā)中static變量的三大作用

    淺談iOS開發(fā)中static變量的三大作用

    下面小編就為大家?guī)硪黄獪\談iOS開發(fā)中static變量的三大作用。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • IOS 開發(fā)之UITableView 刪除表格單元寫法

    IOS 開發(fā)之UITableView 刪除表格單元寫法

    這篇文章主要介紹了IOS 開發(fā)之UITableView 刪除表格單元寫法的相關(guān)資料,這里提供實例幫助大家實現(xiàn)該功能,希望能幫助到大家,需要的朋友可以參考下
    2017-08-08
  • 淺談Xcode9 和iOS11適配和特性

    淺談Xcode9 和iOS11適配和特性

    本篇文章主要介紹了Xcode9 和iOS11適配和特性,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • 混合棧跳轉(zhuǎn)導致Flutter頁面事件卡死問題解決

    混合棧跳轉(zhuǎn)導致Flutter頁面事件卡死問題解決

    這篇文章主要為大家介紹了混合棧跳轉(zhuǎn)導致Flutter頁面事件卡死問題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • iOS實現(xiàn)富文本編輯器的方法詳解

    iOS實現(xiàn)富文本編輯器的方法詳解

    大家在開發(fā)的時候經(jīng)常會用到富文本編輯器,所以這篇文章就給大家整理了如何使用iOS實現(xiàn)富文本編輯器的方法,相信本文對大家具有一定的參考借鑒價值,有需要的朋友們可以一起來看看。
    2016-10-10
  • iOS實現(xiàn)聯(lián)系人列表功能

    iOS實現(xiàn)聯(lián)系人列表功能

    這篇文章主要為大家詳細介紹了iOS實現(xiàn)聯(lián)系人列表功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • iOS開發(fā)驗證判斷語句之正則表達式小結(jié)

    iOS開發(fā)驗證判斷語句之正則表達式小結(jié)

    最近在公司接手重構(gòu)一個項目,發(fā)現(xiàn)之前的開發(fā)在驗證格式這塊寫的太亂了,到處都有相關(guān)的驗證代碼,所以就有了這篇文章,供自己收藏也分享給有需要的朋友們參考借鑒,下面跟著小編來一起學習學習吧。
    2016-12-12
  • IOS代碼筆記UIView的placeholder的效果

    IOS代碼筆記UIView的placeholder的效果

    這篇文章主要為大家詳細介紹了IOS實現(xiàn)placeholder效果的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-07-07
  • iOS開發(fā)實現(xiàn)抽屜效果

    iOS開發(fā)實現(xiàn)抽屜效果

    這篇文章主要為大家詳細介紹了iOS開發(fā)實現(xiàn)抽屜效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • iOS中UITableView Cell實現(xiàn)自定義單選功能

    iOS中UITableView Cell實現(xiàn)自定義單選功能

    本篇文章主要介紹了iOS中UITableView Cell實現(xiàn)自定義單選功能,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02

最新評論