91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何進行iOS?WKWebView秒開方案的分析

發布時間:2021-12-10 13:06:58 來源:億速云 閱讀:558 作者:柒染 欄目:開發技術

如何進行iOS WKWebView秒開方案的分析,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

前言

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

秒開流程圖

如何進行iOS?WKWebView秒開方案的分析

秒開方案

1、模板下載。

2、首圖預加載。

3、正文列表body預取。

4、CDN預加載。

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

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

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

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

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

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

其中initpage和showPage等都是前端處理相關邏輯回調給客戶端狀態,客戶端拿到狀態進行下一步操作。

技術數據

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

秒開效果對比

低端機型:真機6P,12.4.5系統

優化前線上UIWebview展示:

如何進行iOS?WKWebView秒開方案的分析

WKWebview展示:

如何進行iOS?WKWebView秒開方案的分析

WKWebView究竟好在哪里呢?

  1. 內存開銷更小

  2. 內置手勢

  3. 支持更多H5特性

  4. 有Safari相同的JavaScript引擎

  5. 提供更多屬性,比如加載進度、標題、準確的得到頁面數等等

  6. 提供了更精細的加載流程回調(當然相比UIWebView看起來也更麻煩一些,畢竟方法多了)

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

黑山县| 秀山| 无锡市| 永春县| 古田县| 大新县| 安化县| 上杭县| 五台县| 专栏| 华容县| 沁水县| 错那县| 安阳县| 新巴尔虎左旗| 张家口市| 余干县| 江孜县| 岚皋县| 沛县| 常山县| 金溪县| 广宁县| 惠水县| 庄浪县| 湾仔区| 甘德县| 海林市| 清苑县| 精河县| 柯坪县| 宜君县| 襄樊市| 常山县| 台北市| 临漳县| 黑水县| 永嘉县| 西吉县| 鹿邑县| 乌拉特前旗|