我注意到iphone safari会缓存内容,以便您以后的页面加载速度更快,就像桌面浏览器一样。所以以移动gmail网页为例,第一次加载很慢(5-10秒)。但如果我关闭标签并再次重新打开页面,它会非常快(1秒)。
但是,如果您通过应用中的UIWebView加载内容,则此行为不一样。我错过了一些设置吗?如何让UIWebView自动缓存内容,而不必自行解决保存内容的麻烦?
答案 0 :(得分:23)
关键是: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];
答案 1 :(得分:4)
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内容中没有更新,它将从缓存(本地存储)加载。
答案 2 :(得分:2)
基于this discussion thread,UIWebView
可能无法进行任何操作系统级别的缓存。根据经验,我注意到我的iPhone OS设备上的Safari没有缓存其网页(例如,点击Safari中的后退按钮不会从缓存中重新加载旧页面。)
答案 3 :(得分:0)
我已经完成了几个将页面缓存到Documents文件夹的应用程序,然后比较缓存的文件夹的时间戳。加载新网页之前的网页。所以基本流程是:
if (fileIsInCache)
if (cacheFileDate > webFileDate)
getCachedFile
else
getFileFromWeb
saveFileToCache
else
getFileFromWeb
saveFileToCache
stuffFileIntoUIView
maybeReduceCache
您仍然需要访问网络以获取标题,但这通常比下载整个页面/图像/文件快得多。