用于离线查看的UIWebView网页缓存

时间:2013-05-30 02:05:13

标签: ios objective-c uiwebview nsurlrequest

首先,我很确定我已经检查过这里的每一个答案,我想做什么也没有。

  1. 在这个问题中,答案是ASIHTTPRequest,这是死项目。 (How do I download an entire webpage (with images) on the iPhone?
  2. 在这个问题中,用户提出了RNCachingURLProtocol,这真的很棒但是在完全关闭应用程序之后我遇到了一些问题(在任务栏中关闭它)。之后我没有得到CSS或图像,只加载了html。 (Cache a single webpage for use when offline in Xcode / UIWEBVIEW)。
  3. 还有更多答案,但没有一个是好的。对于我正在搜索的内容,必须有一些简单的实现。

    我想:当应用打开时,会加载一些网页。我想完全保存该网页。现在用户可以退出或做任何他想做的事情(只是不卸载)。只要有一些互联网连接(我检查使用可达性类),网页正常加载并保存。如果用户打开应用程序并且没有INTERNET连接我只想显示“它可能不是最新版本bla boa”的消息并显示上次应用程序有互联网连接时保存的完整,保存的网页。

    保存完整网页的最佳方式(最新)是什么?我发现了一些关于MKNetworkKit但我不确定如何使用它。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:7)

听起来标准缓存不够好,因为你无法控制缓存的内容和持续时间。解决这个问题的最简单方法是通过覆盖NSURLCache来创建自己的缓存机制。您可以在http://nshipster.com/nsurlcache/找到一些相关文档,在http://github.com/evermeer/EVURLCache找到一个示例。该示例甚至允许您使用可以包含在应用安装中的预先填充的缓存。

答案 1 :(得分:6)

NSString *stringurl=[NSString stringWithFormat:@"http://www.google.com"];
NSURL *url=[NSURL URLWithString:stringurl];
NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:15.0];
[uiwebview loadRequest:theRequest];

URL加载系统提供对请求的响应的复合磁盘和内存缓存。此缓存允许应用程序减少其对网络连接的依赖性并提高其性能。