2010-10-30 44 views
1

似乎很难改善UIWebView的性能,特别是对于像Mashable或Ars Technica这样的网站来说,在这些网站中加载了大量的脚本,而且长篇多页的文章也很常见。如何提高UIWebView滚动性能?

我所知道的3个类似的问题,但他们都没有工作的解决方案:

我想知道这个问题是否有解决方案。欢迎任何建议。

回答

5

恐怕没有。大网站仍然很大,因此消耗大量内存。

我会反对Brad Larson:支持自己的CATiledLayer中的webview在技术上是可行的(只是做[webView.layer renderInContext: ]),但没有多大意义。平铺图层像网页视图一样延迟加载。你需要大量的微调代码来检测页面何时完成加载,然后将东西缓存到你的平铺层等等。

尽管如此,webview实际上是相当优化。我甚至会争辩说它是整个iOS中最优化的东西之一。它是整个平台中使用最多的性能关键组件。每个多行文本都是一个webview(UITextView是使用它们实现的,例如)。如果Web浏览器在某个网站上出现故障,您将很难加快浏览速度。

有些情况下,不同的解决方案可能也适用,但前提是您需要寻找某种特殊用途。如果你不是,那就放下手,把时间花在别的地方。只是我的2美分...

+4

感谢您的回答。我向苹果开发者技术支持询问了这个问题,这就是他们告诉我的:“目前,我们没有提供任何优化UIWebView渲染的机制。你看到不同的原因是由于Mobile Safari和UIWebView没有使用相同的渲染引擎,性能取决于加载的内容,如果使用javascripts或正在使用插件,可能会影响性能。我建议您提交详细说明您的情况的错误报告。这也会让你知道你的bug报告的状态。“ – 2010-11-05 23:50:23

+0

好吧,我想这听起来很相似,”最终它可能会变得更快“ – 2010-11-06 14:13:40

1

我真的不知道这是否可以帮助或者是给出准确的问题,但这里是我不得不说:

状阴影或梯度,甚至某些属性WebView内部的图像会影响您可以获得的很多表演。尽量不要使用它们和/或尽可能少地保留它们。

1

一些网络浏览器应用程序,如iCab和原子网络浏览器似乎使用_setDrawInWebThread:方法,显然他们被允许在应用程序商店。如果他们没有使用这种方法,那么他们正在使用与UIWebViews相同的东西。有谁知道肯定苹果拒绝使用这个私人API的应用程序?他们可以让那个人“静静地”走吗?我很惊讶苹果到目前为止还没有成为一个公共API,因为任何使用UIWebView来显示网页的应用程序(并且有许多高端应用程序这样做,例如FlipBoard)会使设备看起来“波涛汹涌” '和低于标准表演...