WKWebView localStorage 页面刷新 填坑记

使用场景:

webViewA 与 webViewB 两个页面
1)webViewA 中有个标记flag = 10
2)从webViewA ->webViewB ,改变了标记flag = 15
3)返回webViewA 页面,刷新网页 webView.reload()

刷新页面后, 发现对应的标记没有改变,据h5反馈是缓存的问题, 尝试了各种清空缓存方式, 然后设置重新加载不使用缓存, 然并卵...但风雨跟彩虹更配哦😯

解决方法:
//1. 创建单利WKProcessPool
class EKWWKProcessPool: WKProcessPool {
    class var sharedProcessPool: EKWWKProcessPool {
        struct Static {
            static let instance: EKWWKProcessPool = EKWWKProcessPool()
        }
        
        return Static.instance
    }
}

此处也可以直接使用下面的方式创建单利
static let instance = EKWWKProcessPool()

//2.使用创建的单例WKProcessPool
 let configuration = WKWebViewConfiguration.init()
        
let userController = WKUserContentController.init()
configuration.userContentController = userController
        
//使用单例 解决locastorge 储存问题
configuration.processPool = EKWWKProcessPool.sharedProcessPool
        
let preferences = WKPreferences.init()
preferences.javaScriptCanOpenWindowsAutomatically = true
configuration.preferences = preferences
        
let webView = WKWebView.init(frame: CGRect.zero, configuration: configuration)

关键在于configuration.processPool = EKWWKProcessPool.sharedProcessPool 正如注释,使用单利解决了这个问题, 不同的webView使用同一个WKProcessPool共享Web Content processes

HTML5存储方式

HTML5在客户端存储数据的方式:cookie , localStorage, sessionStorage

cookie:只能存储少量的数据, 常用来存储账号密码等
localStorage : 没有时间限制的数据存储
sessionStorage : 针对一个 session 的数据存储, 当网页关闭时,数据也会被删除。

参考:

http://www.w3school.com.cn/html5/html_5_webstorage.asp
https://zhuanlan.zhihu.com/p/24990222
http://www.jianshu.com/p/8570221c608d

其他解决方案(未尝试):
https://segmentfault.com/q/1010000006785167?_ea=1142000


以上仅是个人使用总结,欢迎批评指正补充~~~~~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值