当前位置:  开发笔记 > 编程语言 > 正文

需要UIWebView中的内容才能快速显示

如何解决《需要UIWebView中的内容才能快速显示》经验,为你挑选了1个好方法。

我的应用程序的一部分缓存网页以供离线查看.为此,我保存从站点获取的HTML并重写img urls以指向本地存储上的文件.当我将html加载到UIWebView中时,它会按预期加载图像,一切都很好.我也是以这种方式缓存样式表.

问题是,当我将手机置于飞行模式时,加载此缓存的html会导致UIWebView显示空白屏幕并在显示页面之前暂停一段时间.我发现它是由Web视图试图获取的原始HTML文档引用的非缓存URL引起的.这些其他URL包括缓存样式表中的图像,iframe中的内容以及用于打开连接以获取其他资源的javascript.当UIWebView尝试获取这些资源时会发生暂停,并且只有在所有这些其他提取超时后才会显示该网页.

我的问题是,如何让UIWebView显示我立即缓存的内容?这是我的想法:

写更多代码来缓存这些其他引用.这可能需要更多代码来捕获所有边缘情况等,尤其是必须解析Javascript以查看在加载页面后它加载的内容

强制UIWebView立即超时,所以没有暂停.我还没弄明白怎么做.

以某种方式获取已经加载的内容,即使外部引用尚未完成提取

剥离所有脚本的代码,链接标签和iframe以"擦除"外部引用.我试过这个,但对于某些网站,结果页面严重搞砸了

有人能帮我一下吗?我一直在努力解决这个问题,而且我的想法已经不多了.



1> Louis St-Amo..:

编辑:只是指出这个问题及其答案已有4年了.我正在聊聊下面的iOS 3.x. 我可以很容易地想象事情在此期间发生了变化 - 哎呀,单独的设备比iPhone 3G更快.因人而异.:)

我一直在看这个过去,但实际上并没有实现任何东西,只是谷歌搜索.总的来说,使用DontLoad在iPhone上执行此操作非常困难/不可能.即使在3月份,也有报道说它可以在Simulator中运行,但不能在设备上运行:http://discussions.apple.com/message.jspa?messageID = 9245292

我只是猜测,但基于其他StackOverflow问题(例如这个),我想也许设备上的缓存在某种程度上比它的Mac和Safari同行更有限.

Apple论坛上的其他人在询问UIWebView和NSURLCache时报告了粗鲁工程师的经验,在bug报告中,工程师说它应该有效,但实际的开发人员说它没有.http://discussions.apple.com/thread.jspa?threadID=1588010(7月 29日 - 8月20日)

可以在这里找到一些解决方案.考虑到[UIImage imageWithData:...],David描述了"用于iPhone的异步缓存图像下载器的实现"的一些代码.

现在我在cocoa-dev邮件列表上发现了这个8月10日的电子邮件:

2009年8月10日下午1:38,Mike Manzano写道:

有没有人能够在iPhone上成功获取URL加载系统以关注NSURLCache的自定义版本?在我看来,它被忽略了.更多信息:

[此页面的链接; 删除.]

(见该页的第二个"答案").

如果我做错了或者我的代码被忽略了,只需要某种线索.

是的,我已经有了它的工作 - 它只需要创建自己的缓存实例并明确地将共享缓存设置为该新实例.

但它绝对有效 - 一旦实现,我的"将表视图单元格的图像设置为网络中的图像"工作得很好(并且没有它滚动是最痛苦的).

Glenn Andreas gandreas @ xxxxxxxxxxxx http://www.gandreas.com/邪恶的乐趣!疯狂,坏,并且知道危险

以上电子邮件可在http://www.cocoabuilder.com/archive/message/cocoa/2009/8/10/242484找到(没有进一步的回复)

可以在iCab博客中找到NSURLCache可以工作的进一步证据:iPhone上的UIWebView的URL过滤(2009年8月18日)

这里的任何人都可能也应该关注Apple的URLCache示例应用程序,因为它可能与他们的工作相关:https://developer.apple.com/iphone/library/samplecode/URLCache/index.html除了刚刚看过它,它说:"此应用程序不使用NSURLCache磁盘或内存缓存,因此我们的缓存策略是通过从其源加载数据来满足请求." 和用途cachePolicy:NSURLRequestReloadIgnoringLocalCacheData.所以这不像我想的那么重要,为什么这个人称 NSURLCache是​​个笑话.

因此,看起来NSURLCache并不像我开始这篇文章那样棘手或不可能.喜欢找到一种有效的方法,同时研究它不起作用的原因.我仍然无法相信"iphone"和"NSURLRequestReturnCacheDataDontLoad"只有25个Google搜索结果......这个答案几乎包含了每一个.而且我很高兴我写了它以便稍后可以参考;-)

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有