2011-06-24 164 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