wkwebview 会缓存html,WKWebView缓存问题(续)

# 缓存问题续

在上一篇文章中,提到精确控制缓存,是从别人的文章上看来的,经过老大一发问,顿时语塞,精确控制用的是NSURLSession的方法,那就意味着不用webView的load系列方法而是用NSURLSession的dataTask将对应的资源先下载下来,

WKWebView *webView = [[WKWebView alloc]initWithFrame:self.view.bounds configuration:[WKWebViewConfiguration new]];

[self.view addSubview:webView];

_webView = webView;

NSURLSession *session = [NSURLSession sharedSession];

NSURL *url = [NSURL URLWithString:@"https://www.baidu.com"];

NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:0 timeoutInterval:30];

NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {

NSLog(@"response:%@",response);

NSLog(@"data:%@",data);

NSLog(@"error:%@",error.description);

if (error == nil) {

dispatch_async(dispatch_get_main_queue(), ^{

[_webView loadData:data MIMEType:@"text/html" characterEncodingName:@"utf-8" baseURL:[NSURL URLWithString:@"https://www.baidu.com"]];

});

}

}];

[task resume];

当我没有指定baseURL的时候,页面是无法显示的,将获取的data转成字符串也确实是一个html,但是就是无法显示,当指定baseURL之后就可以了,我的理解是,相关的css,js文件需要通过这个baseURL去访问,但是这看起来和我之前的讲法不一样,从服务器下载下载js,css,html文件,浏览器渲染,为什么获取的时候,只获取到了html数据呢?baseURL的作用又是什么呢?

A URL used to resolve relative URLs within the document.

baseURL是HTML字符串中引用到资源的查找路径,当HTML中没有引用外部资源时,可以指定为nil;若引用了外部资源,一般情况下使用mainBundle的路径即可。在实际操作中,常常会出现「文本显示正常,图片无法显示」等情况,若HTML文本中引用外部资源都是使用相对路径,则出现这种问题的原因一般都是baseURL参数错误

所以百度页面引用到了外部资源,资源是哪一些?图片?js,css?还是啥?

费解…..匪夷所思…..

现在是网络连接,通过NSURLSession可以加载一个网页,但是如果断网的话,通过加载本地html文件,连静态页面都无法显示.如何显示静态页面呢?

我觉得整个就错了,应该都是H5的工作,对于请求头的控制.网上基本上找不到相关资料,而且现在很少有网页会做缓存处理的.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值