Webview:缓存Ajax调用

时间:2013-05-28 16:04:54

标签: ios ajax caching uiwebview

我想使用简单的UIWebView构建原生iOS应用,但缓存通过网络的所有内容。

对于第一个镜头,我将包含一个按钮以使缓存无效,并在下次启动应用程序时,缓存将被重新填充。稍后我将包括对服务器的调用,然后告诉我使缓存无效并重新填充。

我有以下设置:

  • 一个加载index.html文件的UIWebView
  • index.html拥有一些CSS和一些JavaScript
  • 通过AJAX调用
  • 加载其他代码(JS / CSS)
  • 尝试使用Rob Napier的RNChachingURLProtocol 它只缓存URL请求(CSS和Javascripts声明在 index.html),但没有通过加载的CSS和JS AJAX。

是否还有能够缓存AJAX请求的库?

2 个答案:

答案 0 :(得分:0)

我认为你的问题是这些ajax调用正在获得一个带有http标头参数的响应,这些参数指定它不能被高速缓存。您可以创建一个覆盖这些参数的自定义NSUrlCache。可以在http://nshipster.com/nsurlcache/找到NSUrlCache的说明,并在http://github.com/evermeer/EVURLCache找到样本

答案 1 :(得分:0)

问题已解决。

通过阅读此http://nshipster.com/nsurlcache/(感谢Edwin!)并通过WireShark挂钩到iOS模拟器上的应用程序,我遇到了以下情况:

Webview会自动自动缓存大部分数据。 我的初始请求之后是对服务器进行的 160 HTTP请求

其他请求涉及25个HTTP请求。

所以在我的情况下,我不需要任何进一步的库来处理这个特定用法的缓存(几乎)所有内容,在某些时候删除所有缓存的内容并重新填充。