2011-06-24 74 views
1

我正在学习使用清单文件并产生了此问题。如果某个网站创建了一个清单文件,这会使我缓存3MB的文件。在3G上运行时,3MB对我的iPhone来说非常重要。那么一些恶意网站可以创建这样的清单文件,并使我用尽所有数据津贴?清单文件下载大小限制

另一个问题是,作为一个负责任的开发者,有无论如何检测用户是否使用3G,所以我可以在前一种情况下提供一个较小的清单文件?

谢谢

+0

你应该考虑把它分成两个单独的问题。 –

+0

值得指出的是,“一些恶意网站”也可能包含大图片,或者制作大量的XMLHttpRequests,或者......任何东西:)目前没有办法保护这一点,除非注意到网站正在通过“微调”加载大量内容, 。至于负责和检测3G - 我认为你唯一的方法可能是使用清单事件(特别是进度事件监听器),并留意猜测连接速度的时间。但由于没有办法取消清单下载而无法重新加载页面,所以最好的办法是保持清单较小。 – Rowan

回答

4

你的问题被标记'iPhone',所以我打算给出一个iOS特定的答案。

保存链接到清单中的文件的脱机存储似乎限制为5MB。这一切的证据都是间接的,因为苹果文档中没有提到这个限制。但是,一些苹果工程师已经承认有一个limit。在某些情况下,最新版本的Mobile Safari允许用户使用存储空间,但作为开发人员,您不能强迫他们这样做。

5MB实际上并不是那么多,许多用户肯定会注意到正在发生的事情,如果他们不希望发生这种情况,只需关闭该选项卡即可。我了解,并非每个国家都有相同的限制,但美国的大多数用户限于每月2GB。按照这个速度,一个不知情的用户将不得不不经意地重新下载你的清单,并且它列出100次的文件只占用他们带宽分配的25%。这是一个相当低的限制,恶意使用某人的数据分配的可能性相当偏远。

至于如何判断用户是否使用3G或WiFi,请参阅Apple Developer Center中的Reachability示例。它确实如此。在我意识到的Web应用程序(而不是本机应用程序)中没有办法做到这一点。

-1

我不知道你是怎么得到这个清单文件,但是如果你使用NSURLConnection的,它只是保持运行总计还剩下多少数据下载的问题(最好的地方是连接:didReceiveData :)并取消连接,如果它达到3MB以上。请记住,尽可能将每个连接的数字清零。

作为认定设备,具体细节显得更加由他们应该是,但我已经找到了如何做到这一点(源代码N”全部)一个非常简单的例子:Determine If iPod is First or Second Generation