UIWebView 以更有效的方式降低加载时​​间

Posted

技术标签:

【中文标题】UIWebView 以更有效的方式降低加载时​​间【英文标题】:UIWebView lower loading time with a more efficient way 【发布时间】:2013-03-08 05:33:00 【问题描述】:

我正在下载多个 html,并将它们在本地保存为 NSArray 中的字符串。 然后我使用 3 UIWebViews 来加载内容。用户总是会看到一个UIWebView 和另外两个UIWebViews 在后台使用:

[_firstWebView loadHTMLString:nextHtml.body baseURL:nil];

当用户在UIWebViews 之间移动时,如果他一次移动 2 个UIWebViews,我仍然可以看到 1-2 秒的缓慢加载时间。我考虑过 5 甚至 7 UIWebViews 但我担心它会严重影响内存使用。

我的另一个想法是将内容在本地保存为NSData,然后用它加载

[web loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:filePath]]]; 

但我不确定这是否会给我带来任何改进,或者会不会?

另一个想法是我的应用程序中的某些东西(屏幕上的动画)正在减慢加载时间,所以也许我应该在不同的线程上loadHTMLString:nextHtml

谢谢

【问题讨论】:

你总是乐于尝试,而且你不必在这里请求许可。祝你好运! 【参考方案1】:

最近我做了一些关于在后台将内容加载到 UIWebView 的研究。我发现即使是成功的 loadRequest 也没有效果,而 webview 是不可见的并且没有在某处添加为子视图。

但如果我在加载前访问视图,它会开始显示在后台加载的内容。

所以我先隐藏视图,然后在其中加载内容,然后再将其显示给用户,让视图再次可见:

在加载方式中:

// make some access to view to reflect content changes
self.webView.hidden = YES;

[self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:someurl]]];

当用户切换到 webview 时:

// make view visible again
self.webView.hidden = NO;

这种方法对我有用。希望它也为您指明正确的方向。

【讨论】:

以上是关于UIWebView 以更有效的方式降低加载时​​间的主要内容,如果未能解决你的问题,请参考以下文章

降低Redis内存占用

降低Redis内存占用

降低Redis内存占用

UIWebView 不加载在其他浏览器中有效的 URL

使用 Pandas 以更有效的方式在后续行之间应用函数

从 UITableView 加载 UIWebView 仅第一次有效