gpt4 book ai didi

iphone - 需要UIWebView中的内容能够快速显示

转载 作者:行者123 更新时间:2023-12-03 18:28:46 25 4
gpt4 key购买 nike

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

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

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

  • 编写更多代码来缓存这些其他引用。这可能需要大量代码来捕获所有边缘情况等,尤其是必须解析 Javascript 以查看页面加载后加载的内容
  • 强制 UIWebView 立即超时,这样就不会出现暂停。我还没想出如何做到这一点。
  • 即使外部引用尚未完成获取,也要以某种方式获取已加载的内容来显示
  • 剥离所有脚本、链接标签和 iframe 的代码,以“删除”外部引用。我已经尝试过这个,但对于某些网站,生成的页面严重困惑

有人可以帮我吗?我一直在研究这个问题,但已经没有想法了。

最佳答案

编辑:只是指出这个问题及其答案已经有 4 年历史了。下面我正在谈论 iOS 3.x。我可以很容易地想象到事情已经发生了变化——哎呀,光是这些设备就比 iPhone 3G 更快了。 YMMV。 :)

过去我自己一直在研究这个问题,但还没有真正实现任何东西,只是谷歌搜索。总的来说,使用 DontLoad 在 iPhone 上执行此操作非常困难/不可能。即使在三月份,就有报道称它可以在模拟器中运行,但不能在设备上运行:http://discussions.apple.com/message.jspa?messageID=9245292

我只是猜测,但基于其他 StackOverflow 问题(例如 this one) 我认为设备上的缓存在某种程度上可能比 Mac 和 Safari 的缓存更加有限。

Apple 论坛上的其他人报告了在询问 UIWebView 和 NSURLCache 时遇到粗鲁工程师的经历,在错误报告中工程师说它应该可以工作,但实际的开发人员却说它不能。 http://discussions.apple.com/thread.jspa?threadID=1588010 (7月29日-8月20日)

可能会找到一些解决方案here 。考虑到 [UIImage imageWithData:...],David 描述了一些“iPhone 异步缓存图像下载器的实现”的代码。

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

On Aug 10, 2009, at 1:38 PM, Mike Manzano wrote:

Has anyone been able to successfully get the URL loading system on iPhone to pay attention to custom versions of NSURLCache? It seems to me that it's being ignored. More info here:

[a link to this page; removed.]

(See the second "answer" on that page).

Just need some sort of clue if I'm doing something wrong or if my code's just being ignored.

是的,我已经成功了 - 只是 需要自己制作缓存 实例并明确设置 共享缓存到该新实例。

但它绝对有效 - 一次 实现,我的“设置 TableView 将细胞图像转换为网络图像” 效果很好(并且没有滚动 充其量是痛苦的)。

格伦·安德烈亚斯·甘德里亚斯@xxxxxxxxxxxx http://www.gandreas.com/邪恶的乐趣! 疯狂、糟糕和危险的事情

以上邮箱地址http://www.cocoabuilder.com/archive/message/cocoa/2009/8/10/242484 (没有进一步回复)

NSURLCache 可以工作的进一步证明可以在 iCab Blog: URL filtering for UIWebView on the iPhone 中找到。 (2009年8月18日)

这里的任何人可能还应该查看 Apple 的 URLCache 示例应用程序,因为它可能与他们的工作相关:https://developer.apple.com/iphone/library/samplecode/URLCache/index.html除了现在刚刚查看的内容之外,它还显示“此应用程序不使用 NSURLCache 磁盘或内存缓存,因此我们的缓存策略是通过从其源加载数据来满足请求。”并使用cachePolicy:NSURLRequestReloadIgnoringLocalCacheData 。所以这没有我想象的那么重要,为什么this person称 NSURLCache 为笑话。

看来 NSURLCache 并不像我在这篇文章开始时所说的那么棘手或不可能。一定要喜欢寻找一种有效的方法,同时研究它行不通的原因。我仍然不敢相信“iphone”和“NSURLRequestReturnCacheDataDontLoad”的 Google 搜索结果只有 25 个……这个答案几乎包含了其中的每一个。我很高兴我写了它,以便我以后可以引用;-)

关于iphone - 需要UIWebView中的内容能够快速显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1246420/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com