似乎很难提高UIWebView的性能,特别是对于像Mashable或Ars Technica这样的网站,其中加载了大量脚本并且长篇多页文章很常见。
我知道3个类似的问题,但它们都没有可行的解决方案:
-(void)_setDrawInWebThread:(BOOL)arg1
和-(void)_setDrawsCheckededPattern:(BOOL)arg1
等私有API调用,我们知道App Store应用不允许这样做我想知道是否有任何解决方案可以解决这个问题。欢迎任何建议。
答案 0 :(得分:6)
我担心没有。大型网站仍然很大,因此消耗大量内存。
我反对Brad Larson:在自己的CATiledLayer中支持webview在技术上是可行的(只做[webView.layer renderInContext: ]
)但是没有多大意义。平铺层加载延迟,Web视图也是如此。您需要大量精细的代码来检测页面何时完成加载,然后将内容缓存到您的平铺图层等等。
尽管如此,webview实际上已经非常优化了。我甚至认为它是整个iOS中最优化的东西之一。它是整个平台中最常用的性能关键组件。每个多行文本都是webview(UITextView是使用它们实现的,例如)。如果webview在某些网站上中断,你将很难加快速度。
有些情况下,不同的解决方案可能也会起作用,但前提是您正在寻找特殊目的。如果你不是,那就离开你的手,把时间花在其他地方。只是我的2美分......
答案 1 :(得分:1)
鉴于这个问题,我真的不知道这是否有用或者是否准确,但这就是我要说的:
某些属性(如阴影或渐变)甚至WebView中的图像都会影响很多您可以获得的性能。尽量不要使用它们和/或尽可能少地保留它们。
答案 2 :(得分:1)
某些网络浏览器应用程序(如iCab和Atomic Web Browser)似乎使用了_setDrawInWebThread:方法,显然它们在应用商店中是允许的。如果他们没有使用这种方法,那么他们正在使用与UIWebViews相同的东西。有没有人知道Apple拒绝使用这个私有API的应用程序?难道他们会“默默地”让那个人过去吗?我很惊讶Apple现在还没有把它变成一个公共API,因为任何使用UIWebView来显示网页的应用程序(例如,有很多高调的应用程序都会这样做,例如FlipBoard)会使设备看起来“波涛汹涌” '并且低于标准......