当前位置:  开发笔记 > 前端 > 正文

如何在UIWebView中缓存内容以便以后更快地加载?

如何解决《如何在UIWebView中缓存内容以便以后更快地加载?》经验,为你挑选了1个好方法。

我注意到iphone safari会缓存内容,以便以后加载页面的速度比桌面浏览器快得多.所以以移动gmail网页为例,第一次加载很慢(5-10秒).但如果我关闭标签并再次重新打开页面,则会非常快(1秒).

但是,如果通过应用程序中的UIWebView加载内容,则此行为不一样.我错过了一些设置吗?如何让UIWebView自动缓存内容而无需自己保存内容的麻烦?



1> zaph..:

关键是: 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];


iOS文档说NSURLRequestReturnCacheDataElseLoad"指定应该使用现有的缓存数据来满足请求,无论其年龄或到期日期如何." 这通常不是你想要的,因为它忽略了像max-age这样的缓存策略头.所以这听起来不是一个好的一般答案.看似最好的选择是"NSURLRequestUseProtocolCachePolicy",但这似乎什么都不做.
推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有