美文网首页iOS WebViewIOS知识积累
iOS WKWebView优化方案(一)

iOS WKWebView优化方案(一)

作者: Andy_Swift | 来源:发表于2017-12-01 19:43 被阅读3240次

    关键词
    WKWebView优化混合式开发WKWebView+TableViewWKWebView与js交互

    主要内容


    1、本文内容致力于解决WKWebView在实际使用中的各种问题,包括性能优化、提高响应速度、静态资源预加载等问题。
    2、本文内容也可以为WKWebView+TableView的混合式开发提供思路与解决方案。
    3、因本人技术水平所限,文中不可避免会出现错误,欢迎大家探讨指点。

    WKWebview性能优化节点与对应方案


    1、WkWebView时间消耗可能的节点

    • 页面中初始化WKWebView时间消耗;
    • WkWebView加载js、css、image等静态资源时间消耗;
    • WKWebView渲染页面时间消耗;

    2、对应主要的时间消耗,我的解决方案如下

    • WKWebView做成单例,常驻内存,避免实例化带来的时间消耗,同时避免大量创建造成的内存消耗;
    • js、css、image等进行离线缓存或提前预加载,避免展示等时候才加载,减少加载静态资源的时间消耗;
    • image可以考虑使用native预加载,WKWebView中的图片由native加载好的进行替换;
    • 关于页面渲染时间消耗没什么好说的,只能将页面尽可能做的简单清晰,在代码优化上多做功夫。重度交互放在native上,WKWebView只做丰富内容的展示;

    概要设计


    主要设计思想

    1. 服务端返回一个头部包含js、css内容的、可以作为所有页面壳资源的壳文件(shell.html),native使用shell以单例的方式实例化一个WKWebView;
    2. 当用户在浏览列表页时,接口返回每个页面所包含的image集合、页面body内容(数据接口在稍后给出),App可以选择是否对图片进行预加载以提高WKWebView的响应速度(例如wifi情况下);
    3. 进入包含WkWebView的页面以后,使用列表页中取得的图片和body内容对shell.html中的body内容进行替换,刷新WkWebView内容。也可以根据ID读取本地缓存文件实现内容替换,可操作性较强。

    核心模块及所需方法

    1、资源管理模块

    • 能够根据接口返回的信息有条件地下载js、css、shell.html等静态资源,存储到指定的位置。
    • 能够对静态资源文件进行管理,包括:删除缓存,更新资源等操作。
    • 能够对已经浏览过的页面数据及相关字段信息进行缓存,能够对这部分资源进行管理,包括:清除老旧信息、对应ID查找指定的页面信息、更新其中的字段信息等。

    2、WKWebView单例类

    • 以单例模式生成shell.html文件页面;
    • 能够根据model刷新页面信息;
    • 支持常用的与js的交互能力;
    • 代理方法能够支持获取必要的页面信息;

    各部分详细代码请参照: iOS WKWebView优化方案(二)

    相关文章

      网友评论

        本文标题:iOS WKWebView优化方案(一)

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