有没有办法查询HTML5应用程序缓存的内容?
我正在编写一个使用大量缓存网页内容的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。
答案 0 :(得分:2)
HTML5 AppCache有两个属性,这意味着在正常操作中不需要这样做:
最终结果是,对于任何给定版本的清单文件,其中列出的任何加载到浏览器中的文件都将与清单中列出的所有其他文件一致。您需要检查的是window.applicationCache.status
,并检查它不是UNCACHED
。
还有另一种可能性。如果您按照Dive Into HTML5中的描述“懒洋洋地”将文件添加到AppCache,则可能是您不确定缓存了哪些文件。在这种情况下,你可以调整detecting online state的一种方法,我不打算给你一个经过全面测试的解决方案,但这里是一般的想法:
FALLBACK
。答案 1 :(得分:1)
是的,缓存存储在Application.db中。