Storage limit for indexeddb on IE10
Asked Answered
C

1

7

We are building a web-app that store lots of files as blobs with indexedDB. If the user uses our app at its maximum, we could store as much as 15GB of file in indexeddb.

We ran into a problem with IE10, that I strongly suspect is a quota issue.

After having successfully saved some files, a new call to store.put(data, key); will never ends.

Basically, the function will be called, but no success event nor error event will be called.

If I look into the IndexedDB folder of IE 10 I'll see a handfull of what looks like temporary files (of 512 kB each) getting created and removed indefinitely.

When looking at the "Cache and Database" paramaters window, I see that my site's database has reached 250 MB.

Looking further, I found this blog entry http://msdnrss.thecoderblogs.com/2012/12/using-html5javascript-in-windows-store-apps-data-access-and-storage-mechanism-ii/ which incidently says that the storage limit for Windows Store apps is 250 MB.

I am not using any Windows Store mechanism, but I figured I could be victim of the same arbitrary limit.

So, my question is :

  • Is there any way to bypass this limit ? User is asked for permission to exceed a 10 MB limit, but I saw no question popping to the user when the 250 MB was reached.

  • Is there any other way to store more than 250 MB of data with IE10.

Thanks, I'll take any clues.

Chippewa answered 5/2, 2013 at 21:56 Comment(2)
I'm aware this is an old question but did you find a solution to IE not firing any success or error handlers when the quota is met? I'm using indexedDB to cache large amounts of data. When the limit is reached the proccess just hangs, no error or success callbacks. Makes it very hard to implement an LRU style cache when it becomes full.Vermouth
Ignore my last comment, to late to edit it. IE doesn't lock up. But it does fire the onabort handler not the error handler.Vermouth
T
5

I afraid you can't. Providing the storage limit and asking the user to allow more space is the responsibility of the browser vendor. So I don't think the first option is applicable.

I know the user can allow a website to exceed a give limit (internet options > General > Browsing history > settings > caches and databases), but I don't know if that will overrule the 250MB. It can be that this is a hardcoded limit you can't exceed.

This limit is bound to a domain meaning you can't solve it by creating multiple databases. The only solution would be to store on multiple domains, but in that case you can't cross access them. Also as I see the 250MB limit will be for indexeddb API and File API combined

Tram answered 6/2, 2013 at 6:42 Comment(3)
I was afraid of something like that. For information, if a user set a value higher than 250 in "Notify me when a website cache or database exceeds", the we will be able to reach that limit. However, when the user clicks OK to allow the site to exceed that limit, the same bug (infinite background process) will apears. Unfortunately, we can't set a limit higher than 999 MB (damn it Microsoft, why do you keep thinking you are smarter than your users)Chippewa
On the other hand, why would you want to store that amount of data on a client? Maybe you need to redesign the concept you are using now. I have read an article pointing that the indexeddb API is interesting until the 250mb point. Beyond that it would lose performance...Tram
If you're writing an HTML5 app as opposed to a traditional desktop app, you might want to save 250 MB of data in IndexedDB for the same reason any traditional desktop app currently saves that much data to the hard drive. For instance, as a hobby, I'm working on a purely client-side game that can produce IndexedDB databases in excess of 100 MB (theoretically they could be infinitely large if the game goes on long enough, but I haven't tested much more than 100 MB), and in my very unscientific tests I haven't had performance issues.Quattrocento

© 2022 - 2024 — McMap. All rights reserved.