gpt4 book ai didi

caching - 移动 Safari 应用程序缓存错误?

转载 作者:行者123 更新时间:2023-12-01 04:17:42 26 4
gpt4 key购买 nike

我正在使用 Mobile Safari 的缓存 list 文件来存储多页数据输入应用程序,该应用程序以离线模式在 iPod Touch(3.1.3 版)上运行。应用程序通过 persistence.js 写入客户端数据库ORM。这一切正常。

但是,我偶尔会遇到难以重现的问题,Safari 似乎只是忘记了页面已被缓存。发生这种情况时,会出现“无法打开页面”警报,这与您尝试在关闭 wi-fi 的情况下访问非缓存网站时出现的警报相同。我发现解决此问题的唯一方法是重新连接到无线信号并在线访问该站点,这似乎可以直接设置缓存。当你在办公室时,这很容易做到,但在外地做起来就不是那么容易了。

我没有尝试引用缓存资源之外的任何内容,并且我已经通过在断开连接的情况下运行整个站点来验证应用程序是否被缓存,有时连续几天成功。我觉得操作系统中有一个错误会影响缓存的有效性。我不一定要寻找问题的解决方案(但这会很好),而只是确认其他人遇到了这个问题。

最佳答案

使用缓存 list 和大量故障排除,我能够可靠地缓存整个应用程序;请注意,这是一个单页应用程序,只有几个单独的文件资源。

作为进一步的增强,我一直在尝试修改基于

window.applicationCache status



通知用户有关更新,即:

tap here to apply update



如果可能的话,我可以交换缓存

window.applicationCache.swapCache();



这将允许我交换更新的缓存,然后重新启动页面以提供简化的更新机制。

可能比苹果商店的应用程序更精简。

我怀疑正是由于这个原因,Apple 阻碍了 applicationCache API 来阻碍 Web 应用程序。话虽如此,我相信移动设备上对“html5”API 的支持水平是苹果 safari 中最强大的。

以下是我目前注意到的一些问题,没有特别的顺序。请注意,这不是一个完整的错误列表。

我从来没有收到过“updateready”事件;此警报线永远不会运行:
window.applicationCache.addEventListener('updateready', function(e) {
alert('updateready event status=' + window.applicationCache.status );
}, false);

我无法手动检查更新。下面的代码给了我一个异常(exception)
    try{
window.applicationCache.update();
}catch (err){
alert('exception:\n' + err);
}

似乎一旦我开始与缓存状态交互,缓存就会停止工作。这些错误非常难以捉摸。确定和隔离任何一个问题都需要花费大量时间,尤其是因为所有这些代码都可以在其他浏览器 (chrome) 上完美运行。

现在有一个很好的:
我怀疑如果您将应用程序固定到主屏幕,iCloud 会“备份”资源并在您第一次从主屏幕运行应用程序后恢复它们。为避免此问题,您有时可能需要重命名文件。我已经证明苹果对过时的组件进行了离散备份

从我的应用服务器中完全删除它们

从主屏幕删除固定的网络应用程序

清除所有缓存

在 safari 中打开应用程序网址

验证它是最新版本

固定到家

验证固定的应用程序是最新版本

关闭它

再次运行 - 它回到旧的,不再在您的服务器上。

最后,如果您在手机处于飞行模式时运行固定的应用程序,iCloud 将无法恢复过时的文件。这证明它来自空中。

关于caching - 移动 Safari 应用程序缓存错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3045686/

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