ios – 有没有办法查询HTML5应用程序缓存?

ios – 有没有办法查询HTML5应用程序缓存?,第1张

概述有没有办法查询 HTML5应用程序缓存的内容? 我正在编写一个使用大量缓存Web内容的iOS应用程序.在应用程序脱机时加载给定页面之前,我想检查页面是否存在于缓存中.如果没有,我会通知用户他们必须在线才能看到该内容;如果是的话,我会继续加载它. 现在,iOS有自己的URL缓存系统,我最初只是假设我可以这样检查缓存的内容: if ([[NSURLCache sharedURLCache] cache 有没有办法查询 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 AppCache有两个属性,这意味着在正常 *** 作中不需要这样做:

> AppCache更新 *** 作是原子的,要么更新整个缓存,要么不更新
>创建AppCache后,缓存中的所有文件都将从缓存中提供

最终结果是,对于任何给定版本的清单文件,其中列出的任何加载到浏览器中的文件都将与清单中列出的所有其他文件一致.您需要检查的是window.applicationCache.status并检查它是否不是UNCACHED.

还有另一种可能性.如果您按照Dive Into HTML5中的描述“懒洋洋地”将文件添加到AppCache,则可能是您不确定缓存了哪些文件.在这种情况下,你可以调整detecting online state的方法之一,我不会给你一个经过全面测试的解决方案,但这里是一般的想法:

>创建一个包含唯一标识符的网页,这种标识符不太可能在页面中正常显示.标识符可以是其他正常页面中的隐藏内容.>将此页面设置为清单中的通用FALLBACK.>使用AJAX请求页面.>扫描唯一标识符的响应,如果找到,则表示您知道所请求的页面不在AppCache中

总结

以上是内存溢出为你收集整理的ios – 有没有办法查询HTML5应用程序缓存?全部内容,希望文章能够帮你解决ios – 有没有办法查询HTML5应用程序缓存?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1038585.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存