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 中动态设置字体大小

Surface Pro4链接不上iphone手机的热点

iphone13和12外观的区别 iphone13和iphone12对比哪个好

为 iPhone 和 iPhone 4 开发之间有啥变化?

iPhone 5 与 iPhone 4 的图像命名

设置图像以适合 iPhone 5 和 iPhone 6