如何在UIWebView中caching内容以便稍后加载?
我注意到,iPhone Safaricaching的内容,以便您的网页加载以后更快得多像一个桌面浏览器。 所以以移动gmail网页为例,第一次加载是很慢的(5-10秒)。 但是如果我closures标签并重新打开页面,这是非常快(1秒)。
但是,如果在应用程序中通过UIWebView加载内容,则此行为不一样。 我是否缺less一些设置? 如何让UIWebView自动caching内容,而不必经历自己保存内容的麻烦?
关键是: NSURLRequestReturnCacheDataElseLoad
NSData *urlData; NSString *baseURLString = @"mysite.com"; NSString *urlString = [baseURLString stringByAppendingPathComponent:@"myfile"]; NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:urlString] cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval: 10.0]; NSURLConnection *connection=[[NSURLConnection alloc] initWithRequest:request delegate:nil]; if (connection) { urlData = [NSURLConnection sendSynchronousRequest: request]; NSString *htmlString = [[NSString alloc] initWithData:urlData encoding:NSUTF8StringEncoding]; [webView loadHTMLString:htmlString baseURL:baseURLString]; [htmlString release]; } [connection release];
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,然后只查找内容的变化..,如果URL内容没有更新,它将从caching(本地存储)加载。
基于这个讨论线程 ,它将显示没有任何操作系统级的caching可能与UIWebView
。 根据经验,我注意到我iPhone操作系统设备上的Safari不caching它的网页(例如,在Safari中点击后退button不会从caching重新加载旧页面)。
我已经做了几个应用程序,将页面caching到Documents文件夹中,然后在加载新的网页之前比较caching和网页的时间戳。 所以基本stream程是:
if (fileIsInCache) if (cacheFileDate > webFileDate) getCachedFile else getFileFromWeb saveFileToCache else getFileFromWeb saveFileToCache stuffFileIntoUIView maybeReduceCache
你仍然需要打网页来获取标题,但是通常比下载整个页面/图像/文件要快得多。
- 在iOS 5中使用Storyboard时,无法将多个button分配给UINavigationItem
- NSFetchedResultsController与UILocalizedIndexedCollation
- iOS上的HTMLselectChrome不显示“完成”选项
- alignment到页面底部的button与移动Safari的菜单栏冲突
- 新网站使用哪种标记语言? (桌面和手机)
- 在viewDidLoad中调用UIWebView的stringByEvaluatingJavaScriptFromString是否正确?
- 在iOS Mobile Safari和/或UIWebView中控制文本select行为?
- 修复iPad底部的iframe内的div
- iPad IOS html表格select不会打开
- 防止iOS Safari中的方向更改
- 如何将UIWebView中运行的HTML事件发送到本地Objective-C代码?