gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 05:45:44 25 4
gpt4 key购买 nike

有没有办法查询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 网络调试器)。

那么,有什么方法可以查询 HTML5 应用程序缓存的内容吗?答案是使用 Objective-C 代码还是 Javascript 都没有关系,因为我总是可以执行来自 Objective-C 的相关 JS。

最佳答案

HTML5 AppCache 有两个属性,这意味着在正常操作中不需要这样做:

  1. AppCache 更新操作是原子的,要么更新整个缓存,要么一个都不更新
  2. 创建 AppCache 后,缓存中的所有文件都将从缓存中获取

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

还有一种可能。如果您按照 Dive Into HTML5 中的描述“延迟添加”文件到 AppCache那么可能是您不确定缓存了哪些文件。在这种情况下,您可以为 detecting online state 采用其中一种方法。 , 我不会给你一个经过全面测试的解决方案,但这里是一般的想法:

  1. 创建一个包含唯一标识符的网页,该标识符不太可能正常出现在页面中。标识符可以位于正常页面的隐藏内容中。
  2. 在 list 中将此页面设置为通用 FALLBACK
  3. 使用 AJAX 请求页面。
  4. 扫描响应中的唯一标识符,如果找到它,就知道请求的页面不在 AppCache 中

关于ios - 有没有办法查询 HTML5 应用程序缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14423703/

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