【发布时间】:2013-01-20 10:46:21
【问题描述】:
有没有办法查询 HTML5 应用缓存的内容?
我正在编写一个使用大量缓存 Web 内容的 iOS 应用程序。在应用离线时加载给定页面之前,我想检查该页面是否存在于缓存中。如果没有,我会通知用户他们必须在线才能看到该内容;如果有,我会继续加载它。
现在,iOS 有自己的 URL 缓存系统,我最初只是假设我可以通过这种方式检查缓存的内容:
if ([[NSURLCache sharedURLCache] cachedResponseForRequest:myRequest] != nil) {
// go ahead and load the page
}
else {
// notify the user that the content isn't available
}
我傻了。似乎 iOS 的缓存和 HTML5 的缓存是不相关的: -cachedResponseForRequest: 对任何请求都返回 nil,即使我可以看到 URL 在 HTML5 应用程序缓存中(使用 Safari Web 调试器)。
那么,有什么方法可以查询 HTML5 应用程序缓存的内容吗? 答案是使用 Objective-C 代码还是 Javascript 并不重要,因为我总是可以执行来自 Objective-C 的相关 JS。
【问题讨论】:
-
HTML5 应用程序缓存操作是原子的 - 如果文件在清单中列出,并且缓存存在,则保证文件在缓存中。在您的情况下,您是否希望将清单中未列出的文件添加到应用缓存中?
-
@robertc 谢谢。我不希望添加缓存,但清单会不时更改,并且缓存会适当更新。
-
好的,还有一些其他因素值得一提,我会尽快写一个“正确”的答案。
标签: ios html application-cache nsurlcache