Ric*_*ard 2 html5 html5-appcache ios6
我开发了一个使用appcache的iPad网络应用程序.它不是一个完全离线的应用程序,但我使用appcache存储大型图像文件,以便它们不通过3G发送.问题是当清单更新时,appcache会更新iPad是否在wifi或3G上,这可能很昂贵.
是否可以让用户决定是否可以更新appcache?从我所看到的,这是不可能的,这一切都是自动发生的,你只是得到了事件.但也许有一些诡计就像在飞行中或类似地写清单.
如果有帮助,在服务器端使用PHP.谢谢.
连接类型:理论与未来
W3C上有一个关于网络信息API的规范草案,它提供了连接类型的信息(以太网wifi 2g 3g 4g等),但除了以下内容之外,它还没有在任何浏览器上实现:
Android 2.2+上的Android浏览器(不是Google Chrome浏览器)
navigator.connection.type //基于W3C草案,(在现有Android浏览器上实现)
和PhoneGap这不完全是一个浏览器
navigator.network.connection.type //在PhoneGap上
将来拥有该信息可以检测用户是否有蜂窝数据,然后暂时删除图像的src并通过确认对话框询问用户.
您还可能有使用取消应用程序缓存更新:
window.applicationCache.abort()(文档)
现实
不幸的是,Net Info API暂时无法使用(至少不会普及),但肯定会在将来有所帮助.
远射
有一个数据库包括网络速度(DIAL =拨号,DSL =宽带/电缆,COMP =公司/ T1),但我没有使用它,我怀疑它会有所帮助.
动态应用缓存
在检查这个时,我尝试生成html标签以及动态清单声明,以便将其与Network Info API结合,但AppCache清单在javascript执行之前加载,之后不受影响.因此,无法通过Javascript动态更改清单文件,并且数据URI不是一个选项.
替代方案
HTML5应用程序缓存目前是一个野性的野兽,并且有谈判来改进它.在它改变以支持更复杂的配置(带宽级别标志会很棒)之前,您可以更改解决方案的视角,尽管App Cache可能是您目前最好的.
根据图像的大小,您可以依赖普通的浏览器缓存.您可以组合localStorage和远期到期HTTP标头.LocalStorage以跟踪加载/缓存的图像.