我正在学习使用清单文件并有这个问题。如果某个网站创建了一个清单文件,该文件将使我缓存文件,例如 3MB。当我在 3G 上运行时,3MB 对我的 iPhone 来说已经很多了。那么一些恶意网站可以创建这样的清单文件并让我用尽我所有的数据限额?
另一个问题是,作为负责任的开发人员,是否有办法检测用户是否使用 3G,以便在前一种情况下提供较小的清单文件?
谢谢
你的问题被标记为“iPhone”,所以我将给出一个 iOS 特定的答案。
保存清单中链接的文件的离线存储似乎限制为 5MB。这方面的证据都是间接的,因为苹果文档中没有提到限制。然而,一些苹果工程师已经承认存在限制。在某些情况下,最新版本的 Mobile Safari 允许用户扩展存储空间,但作为开发人员,您不能强迫他们这样做。
5MB 并不是那么大,许多用户肯定会注意到发生了什么事,如果他们不希望它发生,只需关闭选项卡即可。我了解并非每个国家/地区都有相同的限制,但美国的大多数用户限制为 2GB/月。按照这个速度,毫无戒心的用户将不得不意外地重新下载您的清单,并且它列出 100 次的文件仅会占用他们分配的带宽的 25%。这是一个相当低的限制,恶意使用某人的数据分配的可能性相当小。
至于如何判断用户是使用 3G 还是 WiFi,请查看 Apple Developer Center 中的可达性示例。它正是这样做的。在我所知道的网络应用程序(与本机应用程序相反)中没有办法做到这一点。
我不确定你是如何得到这个清单文件的,但如果你使用的是 NSURLConnection,那么只需保持你下载了多少数据的运行总量(最好的地方是 connection:didReceiveData:) 和如果超过 3MB,则取消连接。不过,请记住将每个连接的数字归零。
至于寻找设备,细节似乎比他们应该的要复杂,但我找到了一个非常简单的例子来说明如何做到这一点(全部源代码):确定 iPod 是第一代还是第二代