UIWebView与WKWebView清除缓存

在混合开发过程中,由于缓存问题,经常出现web端代码已经修改,而原生展示还是没有改变,这个就是webView自带的缓存机制

这时,我们就希望在合适的地方,自己手动删除缓存,方法如下:

UIWebView

//清除cookies
NSHTTPCookie *cookie;
NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (cookie in [storage cookies])
{
[storage deleteCookie:cookie];
}
// 清除webView的缓存
[[NSURLCache sharedURLCache] removeAllCachedResponses];

WKWebView

NSSet *websiteDataTypes = [WKWebsiteDataStore allWebsiteDataTypes];
//// Date from
NSDate *dateFrom = [NSDate dateWithTimeIntervalSince1970:0];
//// Execute
[[WKWebsiteDataStore defaultDataStore] removeDataOfTypes:websiteDataTypes modifiedSince:dateFrom completionHandler:^{
// Done
}];

比如我希望程序在结束后台的时候删除缓存,就只需要在AppDelegate中找到函数:

- (void)applicationWillTerminate:(UIApplication *)application

加入上述代码即可。

版权声明:著作权归作者所有。

相关推荐

Kotlin与Java相互调用

Kotlin的设计过程中就考虑到了与Java的互操作性。在Kotlin中可以直接调用既有的Java代码, 反过来在Java中也可以很流畅地使用Kotlin代码。Kotlin 调用 Java一、大多数Java代码,可以直接调用:fun () { val list = ArrayList<string>() list.add("hello world")}二、特殊的调用规则以下

C++队列缓存的实现

为什么使用队列缓存c++的队列缓存主要用于解决大数据量并发时的数据存储问题,可以将并发时的数据缓存到队列中,当数据量变小时再匀速写入硬盘中。 引用queue队列在头文件中引用queue队列#include <queue>using namespace std; 定义缓存结构体struct DataInfo{ char* pBuf;//缓存内容 int iSize;//缓存大小 D

html给文本输入框添加自定义的清除按钮

使用HTML 5,如果对清除按钮的样式不介意的话,可以使用search类型的输入框,它会提供一个默认的清除按钮<input type="search" placeholder="搜索" /> 如果想自定义清除按钮,则需要自己实现,这里使用jquery给出一个实现的方案:<!DOCTYPE h

JavaScript里null与undefined的区别与相似点

初次看,null和undefined看似是一样的,但远非如此。 本文将探讨JavaScript中null和undefined的区别和相似之处。null是什么?有两个你应该理解的null特性:null是空的或不存在的值。null必须显式赋值。将null的值赋给a示例:let a = null; console.log(a); // 输出null un

Kotlin:return与跳转

Kotlin有两种跳转:循环跳转(break与continue)和返回跳转(return)。Labellabel语法:labelName@ label可以放在任何表达式之前,用来标记表达式。如loop@ for (i in 1..100) {     // ... } break和continueb

页面调试禁用Chrome浏览器的缓存

在前端开发过程中,页面调试时常常需要清理浏览器的缓存,下面介绍两种禁用Chrome缓存的方法。方法一:1、F12打开开发这工具2、选中开发者工具的Network标签3、把Disable cache勾选上,如图注意:禁用Chrome的缓存只有在开发者工具打开时才起作用。方法二安装清理缓存的Chrome插件。可以试一下Cache Killer。