美文网首页iOS 进阶iOS
iOS通过WKWebView、WKURLSchemeHandle

iOS通过WKWebView、WKURLSchemeHandle

作者: 今天星期伍 | 来源:发表于2021-08-25 19:15 被阅读0次

    KKQuickDraw

    iOS通过WKWebView、WKURLSchemeHandler协议实现HTML H5秒开,优化HTML加载速度。(拦截请求替换资源)

    Demo

    一、需求

    HTML页面渲染出来的时间过长,影响用户体验。实现秒开H5功能。

    二、了解网页加载过程

    1、首先我们要了解网页加载过程:初始化webview -> 请求页面 -> 下载数据 -> 解析HTML -> 请求 js/css 资源 -> dom 渲染 -> 解析 JS 执行 -> JS 请求数据 -> 解析渲染 -> 下载渲染图片。

    三、秒开原理:

    > 1、APP启动时预存HTML到本地 。

    > 2、启动时下载新的HTML文件去替换。

    > 3、用户点击页面准备加载HTML文件时。

    > 4、拦截请求资源,判断资源是否和本地资源一致。(一致则返回本地资源文件,不一致则请求网络资源)。

    四、更新疑问

    每次请求都会下载最新HTML文件,是会实时更新的。

    五、如何使用

    demo只供参考,demo里面本地只缓存了HTML,还可以缓存js、css、img等资源进行资源替换,从而实现秒开,测试的话,可以在断网的情况下打开网页。代码如用于项目时,开发过程中碰到问题可以和H5工程师协调。

    可以缓存html、css、img、js等文件

    六、我碰到的问题

    我最开始尝试使用的是NSURLProtocol协议,去拦截所有的http+https请求。在WKWebView中确实可以实现资源拦截和替换,但是个别HTML文件,在使用POST请求时,发现body参数丢失,获取不到。尝试过把body缓存到求请求头header里面,效果没有那么好。而且使用NSURLProtocol,涉及到私有API,项目是需要提审上架的,所以放弃这种方式。

    推荐参考

    WKWebview秒开的实践及踩坑之路

    iOS app秒开H5优化探索

    ## 我

    #### Created by 程恒盛 on 2021/05/19.

    #### Copyright © 2019 力王. All rights reserved.

    #### QQ:2534550460@qq.com GitHub:HansenCCC - Overview tel:13767141841

    #### copy请标明出处,感谢,谢谢观看

    Demo地址

    相关文章

      网友评论

        本文标题:iOS通过WKWebView、WKURLSchemeHandle

        本文链接:https://www.haomeiwen.com/subject/yrseiltx.html