iPhone:NSURLRequestCachePolicy 设置之间的性能差异
Posted
技术标签:
【中文标题】iPhone:NSURLRequestCachePolicy 设置之间的性能差异【英文标题】:iPhone: Performances Differences Between NSURLRequestCachePolicy Settings 【发布时间】:2010-02-14 13:34:28 【问题描述】:在 iPhone 上使用NSURLRequest 时,各种NSURLRequestCachePolicy 设置之间的实际性能差异是什么?我对缓存策略对用户感知 UIWebView 页面显示速度的影响特别感兴趣。
我一直在使用默认的 NSURLRequestCachePolicy
,但我认为 NSURLRequestReloadRevalidatingCacheData 可能最适合大多数情况,尤其是在返回上一页时。
如果您在实际条件下使用过各种缓存策略,哪种策略在特定情况下被证明是最佳的?哪种策略可在三种不同类型的 iPhone 连接(wi-fi、3G 和 Edge)上提供最佳整体性能?缓存策略对用户对页面加载速度的感知是否有任何显着影响,还是我应该寻找其他地方来优化 UIWebView 的显示时间?
更新:
似乎有一个共识,即 UIWebView 似乎忽略了任何 NSURLRequest 给定它的缓存设置。我不完全相信这是最终答案,但除非有时间进行一些广泛的测试,否则我不能否认它。因此,我接受评分最高的答案。但是,如果这件事对您的项目很重要,我建议您对答案持保留态度。 -- TechZen.
【问题讨论】:
【参考方案1】:我认为这不会对您的 UIWebView 加载时间产生任何影响。 UIWebView 是基于 WebKit 构建的,它们内部并没有使用NSURLConnection
(它们的级别要低得多,直接使用CFNetwork
)。
这可能不是您想听到的,但加快 UIWebView 加载时间的最佳方法可能是不使用 UIWebView。渲染网页是相当消耗 CPU 的。事实上,MobileSafari 实际上主要受 CPU 限制,而不是受网络限制——例如,请注意在滚动时填充该棋盘格图案需要多长时间。要真正快速、快速地加载内容,最好在 Cocoa 中创建一个原生界面。
【讨论】:
你确定吗?-[UIWebView loadRequest]
确实接受 NSURLRequest
,它确实附加了缓存策略。这只是被忽略了吗?如果请求不用于管理连接,为什么还要使用它?我没有时间从头开始创建 webview,所以我需要优化这个。
您要求提供有关我不知道的 Apple 框架的实施细节。确定它是否会影响感知性能的最简单方法是进行自己的测试。
看起来我必须这样做,但这样的测试很困难,因为您只能对少量页面进行抽样。很难得到好的数据。我曾希望有人知道细节,但我想这是一个深奥的问题。【参考方案2】:
我花了几个小时完成一个项目,试图让 UIWebView
缓存我正在加载的页面。如果不将文件存储在本地,从应用程序方面证明是不可能的。 UIWebView
似乎完全忽略了NSURLRequestCachePolicy
。
Yahoo! has some info 关于 iPhone 的缓存行为。
【讨论】:
雅虎!页面很有趣,但已经有两年历史了。我不确定它的相关性。 好点。至少,较新的硬件可能缓存更多。【参考方案3】:我刚刚对 WebKit 资源进行了 grep,但没有发现 -[NSURLRequest cachePolicy]
的任何用途。
【讨论】:
以上是关于iPhone:NSURLRequestCachePolicy 设置之间的性能差异的主要内容,如果未能解决你的问题,请参考以下文章
在 iphone 5 和 iphone 6 中动态设置字体大小