我刚刚在iPad上发现了一些新的iOS 6的奇怪行为,我正在测试一个web应用程序以供离线使用。这个web应用程序不过是一个带有缓存清单的静态网站,所以没有使用像sencha触摸之类的特殊框架,也没有使用phnoegap这样的工具。只有HTML,CSS和JavaScript以及一个cache.manifest。
该应用程序以前运行良好:我可以将网站保存到主屏幕。当我从那里打开它时,所有的数据都会被下载以进行缓存。下载结束时,弹出窗口会问我是否想将缓存增加到50 up接受--一切都很好--离线使用正常。
现在,在iOS 6的更新之后:我对应用程序做了一些修改。从主屏幕上卸载该应用程序。在流动狩猎中再次打开了它。保存到主屏幕。当打开时,下载将按预期的方式启动。但随后,它冻结在99%。当我在控制台中查找它时,我会收到错误消息:“应用程序缓存更新失败,因为超出了大小配额。”
奇怪的是:当我在浏览器中打开它时,下载就开始了,最后有人问我是否想将缓存大小增加到50 it。我当然确认了。当我现在查看safari在“网站数据”的首选项时,我看到这个应用程序的所有缓存数据都是33 in!所以一点也不超过50 at!
这是iOS6的错误吗?自从更新到iOS 6之后,是否有人在将网站保存到主屏幕时遇到了缓存数据方面的问题?我真的被困在这里了。在网上找不到有用的东西..。
(不幸的是,我不能发布任何链接到web应用程序和/或它的文件)。
编辑:
我发现了一些关于这个问题的更多信息:
http://www.nsbasic.com/blog/?p=928
显然,wep-保存在主屏幕上的应用程序现在被视为本地应用程序,这意味着保存到主屏幕的同一个应用程序的每个实例都得到了它自己的“存储沙箱”。因此,数据是独立于保存在移动Safari中的数据。这意味着如果您删除所有移动safari的网站-数据,这对保存到主屏幕的web应用程序没有任何影响(在ios6之前,他们共享相同的数据)。
我还发现:
iOS 6在网络应用程序(苹果-移动-web-应用程序)中破坏GeoLocation
虽然不是完全相同的主题,但它可能是相关的。显然,web应用程序保存在主屏幕上
<meta content="yes" name="apple-mobile-web-app-capable" />不能使用地理位置。地理位置只有当你从你的web应用程序中删除这个元标签时才能工作。也许这也是一个解决缓存问题的方法,我还不能测试它。但话又说回来:如果保存到主屏幕的网络应用更像本地应用程序,那么也许不再需要cache.manifest了?如果我发现更多的话我会回来报告的。
EDIT2:
好吧,经过一些测试,没有从网络和苹果那里得到任何有用的提示,我至少发现了一些东西:当我删除
<meta content="yes" name="apple-mobile-web-app-capable" />当然,从网站上看,一切都很好,因为就像你打开Safari一样,到目前为止,我还没有遇到任何问题。所以我的兴趣是让它在没有浏览器铬的情况下工作。如前所述,缓存仅为99%,然后我将获得超出错误的缓存大小配额。然后,我关闭了主屏幕应用程序,并再次打开它。现在,缓存下载重新开始,并完成很好!没有冻结,没有错误!所有的东西似乎都是本地储存的。我今天只能在iPad模拟器上测试它,但我希望我能尽快证实这一点,我可以得到我的手在我们的设备稍后。
因此,似乎没有被问到是否要增加缓存大小,而是获得超出错误的缓存大小配额。也许是因为主屏幕应用程序的数据存储现在是不同的处理方式,所以您不必再手动增加缓存大小(当然,这纯粹是猜测)。不过,如果是这样的话,就不应该有任何错误。因此,与其被要求增加缓存大小,你必须打开两次主屏幕应用程序,这是一个相当蹩脚的解决办法,顺便说一下……
EDIT3:
我只能在一个真正的设备上确认这种行为:将->保存到主屏幕上,从主屏幕上打开->下载到缓存文件,->缓存大小配额超过错误,->关闭主屏幕应用程序(按下主页按钮) ->再次重新打开它,再重新打开->,缓存文件,再次下载->,这一次没有错误->,所有可用的脱机。
我还在一个使用iOS 5的设备上测试了它,在那里,它的工作原理与预期一样,没有错误。所以这绝对是iOS 6的问题。
其他人能证实这种行为或错误吗?
EDIT4:
我偶尔有机会在iOS 6.1.3上测试这个-不幸的是,仍然是相同的行为.
发布于 2012-10-04 15:17:45
我发现下面的链接很有用。它解释说,由于主屏幕应用程序现在像本地应用程序一样存储,它们有自己的存储/缓存。
地理定位在第一次迭代中工作,但从那时起就无法更新。
iOS 6地理定位与本地数据存储
“主屏幕应用程序中的数据现在像本地应用程序一样存储。本地应用程序都有自己的沙箱存储、备份和还原数据。在iOS 6之前,主屏幕应用程序与运行在浏览器中的同一应用程序共享数据。如果用户在浏览器中清除缓存,应用程序的主屏幕版本将丢失其数据too.With iOS 6,主屏幕应用程序的数据将保存到沙箱中,就像本地应用程序一样。备份和恢复正确处理数据,浏览器中的清晰缓存不会影响它们。”
https://stackoverflow.com/questions/12625297
复制相似问题