我在试图解决的2个事情在我 UIWebView:

  1. 载当地的资产地点的遥的人,在适当的条件
  2. 载荷的远程资产正常的,如果没有当地人,或者他们已经过时
  3. 允许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。

  1. UIWebView 忽略的服务器 Cache-Control 头HTML内容
  2. UIWebView 要求一个 NSCachedURLResponse's主HTML请求,但是然后忽略和抛弃。
  3. UIWebView 要求 NSURLCache 资产如果你装载这一请求,但当载有HTML或数据绕过缓完全并请它直接从远程服务器。

因此,首先,任何人看到一个解决这事吗?第二,任何原因,我是愚蠢的,而这些都不是实际上SDK错误?

有帮助吗?

解决方案 2

我已经放弃了这一点。有太多的陷阱。而不是我只是载新的一页,在通过阿贾克斯。而不是 [webview goBack] 我有一些自定义javascript要做很酷的东西给我 [webview stringByEvaluatingJavascriptFromString:@"goBack()"]

其他提示

解决你的第一个#3:

虽然它可能似乎有点不正统,如何保持下载HTML到NSUserDefaults目作为一个平串,并恢复它(有条件的)后,当你需要它吗?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top