UIWebView和NSURLCache有一个陷入困境的关系
-
21-09-2019 - |
题
我在试图解决的2个事情在我 UIWebView
:
- 载当地的资产地点的遥的人,在适当的条件
- 载荷的远程资产正常的,如果没有当地人,或者他们已经过时
- 允许webview去"回"而不需要重新装载它html形式的服务器
因此,要处理#1和2号,我实现了一个亚类的定义 NSURLCache
.它被称为当webview请求的资产,和我一起发送的地方,而不是,中止的服务器呼吁的资产。我甚至有一点点时间戳系统,它知道,如果地方版本,是旧的还是不要找出使用哪一种。
但#3扔给我一个循环。看来,无论cache-control头, UIWebView
总是会重新装载HTML时回去。
所以我试着力缓存HTML在我的定义 NSURLCache
类。这似乎工作,并返回的实例 NSCachedURLResponse
与HTML我想要,但是 UIWebView
失败的注意,并将其载从服务器。之后,一些搜索我看到有一些"不一致"与 UIWebView
和url缓存,并且我想这是一个。伟大的工程资产,但没有那么大的HTML,使它的网页的努力显示。
然后我决定,因为这可能不起作用,做手工。我创造了一堆的网址,并且它们的数据,我拿手动和加载 loadData:MIMEType:textEncodingName:baseURL:
.你瞧它似乎对工作伟大的!我现在可以回去,网查委托会拦截负荷,并且告诉它载我的手提取的数据,服务器不会被击中。
然而,我注意到,NSURLCache没有再被使用为我的资产。看来它只要求对缓存的资产,如果你加载内容与 loadRequest:
并不是由装载数据或html string的 baseUrl
设置适当的。
因此,尽管我所有的努力我不能让一个网页查看有条件地负荷地资产和后导航没有击中的服务器。似乎我有一些错误,这里在SDK。
UIWebView
忽略的服务器Cache-Control
头HTML内容UIWebView
要求一个NSCachedURLResponse
's主HTML请求,但是然后忽略和抛弃。UIWebView
要求NSURLCache
资产如果你装载这一请求,但当载有HTML或数据绕过缓完全并请它直接从远程服务器。
因此,首先,任何人看到一个解决这事吗?第二,任何原因,我是愚蠢的,而这些都不是实际上SDK错误?
解决方案 2
我已经放弃了这一点。有太多的陷阱。而不是我只是载新的一页,在通过阿贾克斯。而不是 [webview goBack]
我有一些自定义javascript要做很酷的东西给我 [webview stringByEvaluatingJavascriptFromString:@"goBack()"]
其他提示
解决你的第一个#3:
虽然它可能似乎有点不正统,如何保持下载HTML到NSUserDefaults目作为一个平串,并恢复它(有条件的)后,当你需要它吗?