2013-02-05 59 views
7

我們正在構建一個web應用程序,該應用程序將大量文件存儲爲帶有indexedDB的blob。如果用戶最多使用我們的應用程序,我們可以在indexeddb中存儲多達15GB的文件。IE10上indexeddb的存儲限制

我們遇到了IE10的問題,我強烈懷疑是配額問題。

在已經成功保存一些文件,以store.put(data, key);一個新的呼叫永遠不會結束。

基本上,該函數將被調用,但不會調用成功事件或錯誤事件。

如果我看看IE 10的IndexedDB的文件夾,我去看看是什麼樣子的臨時文件(512 KB每)一個福得到創建和刪除下去。

查看「緩存和數據庫」參數窗口時,我看到我的網站的數據庫已達到250 MB

進一步看,我發現這個博客條目http://msdnrss.thecoderblogs.com/2012/12/using-html5javascript-in-windows-store-apps-data-access-and-storage-mechanism-ii/其中順便說一句說,爲Windows Store應用程序的存儲限制爲250 MB。

我沒有使用任何Windows應用商店的機制,但我想我可能是相同的任意限制受害者。

所以,我的問題是:

  • 有什麼辦法繞過這個限制?要求用戶超過10 MB的限制,但是當達到250 MB時,我看不到任何彈出給用戶的問題。

  • 是否有任何其他的方式來存儲超過250 MB的數據與IE10。

謝謝,我會採取任何線索。

+0

我知道這是一個老問題,但你找到一個解決方案時,配額就遇到了IE瀏覽器不點火的任何成功或錯誤處理程序?我正在使用indexedDB來緩存大量的數據。達到限制時,進程只會掛起,沒有錯誤或成功回調。當它變滿時,很難實現'LRU'風格緩存。 – ste2425

+0

忽略我最近的評論,以便對其進行編輯。 IE不鎖定。但它會觸發'onabort'處理程序而不是錯誤處理程序。 – ste2425

回答

5

我怕你不能。提供存儲限制並要求用戶允許更多空間是瀏覽器供應商的責任。所以我不認爲第一種選擇是適用的。

我知道用戶可以允許一個網站超出限制(互聯網選項>常規>瀏覽歷史>設置>緩存和數據庫),但我不知道這是否會否決250MB。可能是因爲這是一個硬編碼的限制,你不能超過。

此限制綁定到一個域,意味着您無法通過創建多個數據庫來解決該限制。唯一的解決方案是存儲在多個域中,但在這種情況下,您不能跨訪問它們。另外,因爲我看到了250MB的上限將是是IndexedDB API和文件API結合

+2

我很害怕這樣的事情。有關信息,如果用戶在「當網站緩存或數據庫超出時通知我」中設置的值高於250,我們將能夠達到該限制。但是,當用戶單擊確定以允許該站點超過該限制時,同樣的錯誤(無限後臺進程)將會出現。不幸的是,我們無法設置高於999 MB的限制(該死的是微軟,爲什麼你一直認爲你比你的用戶更聰明) – Thomas

+1

另一方面,你爲什麼要將這些數據存儲在客戶端?也許你需要重新設計你現在使用的概念。我讀過一篇文章,指出indexeddb API在250MB點之前是有趣的。除此之外,它將失去性能... –

+5

如果您正在編寫HTML5應用程序而不是傳統的桌面應用程序,那麼您可能希望在IndexedDB中保存250 MB的數據,這是因爲任何傳統桌面應用程序當前都會保存那麼多的數據到硬盤。例如,作爲一個愛好,我正在開發一個純粹的客戶端遊戲,它可以產生超過100 MB的IndexedDB數據庫(理論上,如果遊戲持續時間足夠長,它們可能會無限大,但我沒有測試過太多超過100 MB),並且在我非常不科學的測試中,我沒有遇到性能問題。 – dumbmatter