激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - IOS - iOS WKWebView秒開方案實戰(zhàn)記錄

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

2022-01-24 14:42鐘環(huán) IOS

從iOS8開始,就引入了新的瀏覽器控件WKWebView,用于取代UIWebView,下面這篇文章主要給大家介紹了關于iOS WKWebView秒開方案的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下

 

前言

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

 

秒開流程圖

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

 

秒開方案

1、模板下載。

2、首圖預加載。

3、正文列表body預取。

4、CDN預加載。

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

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

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

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

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

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

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

 

技術數據

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

 

秒開效果對比

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

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

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

WKWebview展示:

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

 

WKWebView究竟好在哪里呢?

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

 

總結

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

原文鏈接:https://www.jianshu.com/p/74fad07ec640

延伸 · 閱讀

精彩推薦
  • IOSiOS開發(fā)技巧之狀態(tài)欄字體顏色的設置方法

    iOS開發(fā)技巧之狀態(tài)欄字體顏色的設置方法

    有時候我們需要根據不同的背景修改狀態(tài)欄字體的顏色,下面這篇文章主要給大家介紹了關于iOS開發(fā)技巧之狀態(tài)欄字體顏色的設置方法,文中通過示例代碼...

    夢想家-mxj8922021-05-10
  • IOSiOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果

    iOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果

    這篇文章主要介紹了iOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果的相關資料,需要的朋友可以參考下...

    jiangamh8882021-01-11
  • IOS詳解iOS中多個網絡請求的同步問題總結

    詳解iOS中多個網絡請求的同步問題總結

    這篇文章主要介紹了詳解iOS中多個網絡請求的同步問題總結,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧...

    liang199111312021-03-15
  • IOSiOS中MD5加密算法的介紹和使用

    iOS中MD5加密算法的介紹和使用

    MD5加密是最常用的加密方法之一,是從一段字符串中通過相應特征生成一段32位的數字字母混合碼。對輸入信息生成唯一的128位散列值(32個字符)。這篇文...

    LYSNote5432021-02-04
  • IOSiOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和Masonry簡單使用)

    iOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和

    這篇文章主要介紹了iOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和Masonry簡單使用)的相關資料,需要的朋友可以參考下...

    CodingFire13652021-02-26
  • IOSiOS實現控制屏幕常亮不變暗的方法示例

    iOS實現控制屏幕常亮不變暗的方法示例

    最近在工作中遇到了要將iOS屏幕保持常亮的需求,所以下面這篇文章主要給大家介紹了關于利用iOS如何實現控制屏幕常亮不變暗的方法,文中給出了詳細的...

    隨風13332021-04-02
  • IOSiOS開發(fā)之視圖切換

    iOS開發(fā)之視圖切換

    在iOS開發(fā)中視圖的切換是很頻繁的,獨立的視圖應用在實際開發(fā)過程中并不常見,除非你的應用足夠簡單。在iOS開發(fā)中常用的視圖切換有三種,今天我們將...

    執(zhí)著丶執(zhí)念5282021-01-16
  • IOSiOS中UILabel實現長按復制功能實例代碼

    iOS中UILabel實現長按復制功能實例代碼

    在iOS開發(fā)過程中,有時候會用到UILabel展示的內容,那么就設計到點擊UILabel復制它上面展示的內容的功能,也就是Label長按復制功能,下面這篇文章主要給大...

    devilx12792021-04-02
主站蜘蛛池模板: 一级黄色毛片a | 亚洲一区二区三区高清 | 欧美成人一级 | 色婷婷久久久亚洲一区二区三区 | 成人短视频在线播放 | 在线一级片 | 国产精品久久国产精麻豆96堂 | 五月婷婷第四色 | 一级在线免费 | 91短视频版高清在线观看免费 | 国产精品久久久久久久四虎电影 | 欧美一区永久视频免费观看 | 久久精品首页 | chinese hd xxxx tube| 国产一区二区在线免费播放 | 韩国精品一区二区三区四区五区 | 久草在线观看福利视频 | 草莓福利视频在线观看 | 黄色av网站免费 | 91网站链接| 中文字幕一区久久 | 欧美日本亚洲视频 | 精品一区二区免费视频视频 | 欧美一级片免费在线观看 | 蜜桃欧美性大片免费视频 | 99亚洲伊人久久精品影院红桃 | 久久99国产综合精品 | 欧美成人精品 | 久久精品无码一区二区三区 | 中文字幕在线观看网址 | 性欧美一区二区三区 | 欧美成人影院 | 中韩毛片 | 色诱亚洲精品久久久久久 | 欧美性生活视频免费 | 久久欧美亚洲另类专区91大神 | 在线一级片 | 羞羞的网站| www久| 麻豆porn| 黄色视屏免费在线观看 |