iPhone UIWebView缓慢加载到本地HTML文件

Min*_*ael 28 iphone performance offline view uiwebview

我正在开发一个应用程序,需要在保存页面的整个HTML之后(完全)缓存网页以及CSS文件和图像(通过链接将每个文件与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]];
Run Code Online (Sandbox Code Playgroud)

是否还有其他方法UIWebView可以将文件加载到可以加载更快的文件中?

PS:它在模拟器上加载速度非常快(离线),但在设备上需要很长时间(考虑到它已经脱机的缓存文件)

感谢帮助.

ACB*_*urk 6

您的解决方案是否实际缓存了除html文件之外的其他内容,包括图片,CSS等,并在html页面中重新链接它们?我猜你正在下载并缓存html页面和外部资源,然后UIWebView正在加载该html并仍然出去加载外部资源.这可以解释模拟器上的快速性能和设备上的较慢性能.

这是一个专门用于完成您要执行的操作的库:ASIWebPageRequest.

还应该指出,它可能只是磁盘I/O瓶颈的情况.我知道在我的项目中,我在一个uitableview中加载大图像,甚至在它们被缓存之后我注意到它们从磁盘上拉下来时会有相当多的滞后因为它们太大了.


mvd*_*vds 3

由于这可能只是需要时间,因为它需要解析和渲染页面,因此您可以考虑在后台启动 UIWebView;即添加为子视图,但不可见。

也许 UIWebView 足够聪明,知道它不需要做任何事情,但我怀疑至少 html 和 css 解析是立即完成的。

如果它在不可见的情况下不执行任何操作,请将大小减小到 1x1 并设置 opacity=0,然后将该像素放置在不会干扰触摸事件处理的位置。

并不完美,但可能有效。