我正在开发一个应用程序,需要缓存网页(完全)与他们的CSS文件和图像后,保存整个网页的HTML (通过链接来存储每个文件与HTML文件)。
在离线查看HTML文件时,UIWebView需要很长时间才能加载页面,因为我已经离线了,文件以及它的CSS和图像都在磁盘上。
我使用下面的代码来加载文件:
NSData *htmlData = [NSData dataWithContentsOfFile:htmlFilePath];
[wView loadData:htmlData MIMEType:@"text/html" textEncodingName:@"UTF-8" baseURL:[NSURL fileURLWithPath:self.htmlFolderPath isDirectory:YES]];是否有其他方法可以将文件加载到UIWebView,从而可以更快地加载它?
附言:它在模拟器上加载非常快(离线),但在设备上需要很长时间(考虑到它已经是离线缓存文件)
谢谢你的帮助。
发布于 2010-08-04 05:30:12
您的解决方案是否真的缓存了html文件以外的内容,即图片、css等,并在html页面中重新链接它们?我猜您正在下载并缓存html页面和外部资源,然后UIWebView正在加载该html,并且仍然要加载外部资源。这将解释模拟器上的快速性能和设备上的较慢性能。
这里有一个专门设计用来做你想要做的事情的库:ASIWebPageRequest。
还应该注意的是,这可能仅仅是磁盘i/o瓶颈的情况。我知道在我的项目中,我在uitableview中加载大图像,即使在它们被缓存之后,我也注意到在从磁盘上拉出它们时有相当多的延迟,因为它们太大了。
发布于 2011-01-15 22:59:59
我发现某些类型的CSS可以使WebView呈现陷入停顿。例如:
body { -webkit-box-shadow:inset 0 0 100px #222; }这在模拟器中工作得很好,看起来也很不错。但在手机上(即使是iPhone 4、iOS 4.2),一个简单的页面需要10秒才能呈现。
发布于 2010-08-03 19:47:13
由于这可能只需要时间,因为它需要解析和呈现页面,您可以考虑在后台启动UIWebView;即作为子视图添加,但不可见。
也许UIWebView足够聪明,知道它不需要做任何事情,但我怀疑至少html和css解析是立刻完成的。
如果它在不可见的情况下什么也不做,那么将大小减小到1x1并设置opacity=0,并将该像素放在不会干扰触摸事件处理的位置。
不是完美的,但它可能会起作用。
https://stackoverflow.com/questions/2012793
复制相似问题