- indexedDB 和本地存储都是键值存储。是什么 拥有两个键/值存储的优势?
- indexedDB是异步的,但是join(最耗时的事情) 是手动的。它们似乎与异步调用在同一个线程中运行 被制成。这如何不阻塞用户界面?
- indexedDB 允许更大的存储。为什么不增加尺寸 HTML5 商店?
- 我正在挠头。 indexedDB 有什么意义?
最佳答案
IndexedDB 不像本地存储那样是键值存储。本地存储只存储字符串,因此要将对象放入本地存储,通常的方法是 JSON.stringify它:
myObject = {a: 1, b: 2, c: 3};
localStorage.setItem("uniq", JSON.stringify(myObject));
这对于查找具有键 uniq
的对象来说很好,但是从本地存储中取回 myObject 的属性的唯一方法是 JSON.parse 对象并检查它:
var myStorageObject = JSON.parse(localStorage.getItem("uniq"));
window.alert(myStorageObject.b);
如果本地存储中只有一个或几个对象,这很好。但是假设您有上千个对象,所有对象都具有属性 b
,并且您只想对那些 b==2
的对象执行某些操作。使用本地存储,您必须遍历整个商店并检查每个项目的 b
,这是大量浪费的处理。
使用 IndexedDB,您可以存储 stuff other than strings in the value :“这包括简单类型,例如 DOMString 和 Date 以及 Object 和 Array 实例。”不仅如此,你还可以create indexes关于您存储在值中的对象的属性。因此,使用 IndexedDb,您可以将相同的数千个对象放入其中,但在 b
属性上创建一个索引,并使用它来检索 b==2
的对象,而不会产生开销扫描商店中的每一件元素。
至少是这样。 IndexedDB API 不是很直观。
They appear to run in the same thread as the async calls were made. How will this not block the UI?
异步和多线程不是一回事,JavaScript, as a rule, is not multi-threaded .您在 JS 中进行的任何繁重处理都会阻塞 UI,如果您想尽量减少对 UI 的阻塞,请尝试 Web Workers .
indexedDB allows a larger store. Why not increase the size of the HTML5 store?
因为,如果没有适当的索引,它会变得越大越慢。
关于javascript - indexedDB 在概念上与 HTML5 本地存储有何不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5924485/