ImmortalDB用于瀏覽器的彈性鍵值存儲(chǔ)
ImmortalDB 是用于瀏覽器的彈性鍵值存儲(chǔ)

ImmortalDB 是在瀏覽器中存儲(chǔ)持久鍵值數(shù)據(jù)的最佳方法,保存在其中的數(shù)據(jù)被冗余地存儲(chǔ)在 Cookies、IndexedDB、LocalStorage 和 SessionStorage。如果其中的任何數(shù)據(jù)被刪除或損壞,ImmortalDB 會(huì)進(jìn)行自我修復(fù)。
舉個(gè)例子,清除 cookie 是一種常見(jiàn)的用戶操作(甚至對(duì)非技術(shù)用戶來(lái)說(shuō),也是如此)。一般在沒(méi)有存儲(chǔ)壓力警告的情況下,瀏覽器也會(huì)草率地刪除 IndexedDB、LocalStorage 和 SessionStorage。而 ImmortalDB 對(duì)于這種情況,則是有彈性的。
這樣說(shuō)吧,ImmortalDB 就像 Evercookie,但它
會(huì)積極地被維護(hù)和記錄;
提供了一個(gè)簡(jiǎn)單的,現(xiàn)代的,基于 Promise 的 API;
在可靠性和對(duì)用戶的尊重間取得平衡。數(shù)據(jù)可靠地被存儲(chǔ)著,但如果用戶想清除 cookie 和應(yīng)用程序的存儲(chǔ),也可以自行清除數(shù)據(jù);
不使用惡意的漏洞利用工具(exploits),也不使用 Flash、Silverlight 或 Java 等第三方插件。只使用標(biāo)準(zhǔn)的、經(jīng)過(guò)批準(zhǔn)的 HTML 5 API;
不破壞性能或用戶體驗(yàn)。例如,Evercookie 的 CSS 歷史記錄敲門(Knocking)可能會(huì)引起大量的后臺(tái) HTTP 請(qǐng)求產(chǎn)生,加載 Silverlight 或 Flash 可能會(huì)引發(fā)未被請(qǐng)求的許可模態(tài)框(permission modals)、或是顛簸(Thrashing)用戶的磁盤。
ImmortalDB 是如何工作的
當(dāng)您將鍵值對(duì)存儲(chǔ)在 ImmortalDB 中時(shí),該鍵和值會(huì)冗余地保存在瀏覽器的 cookie、IndexedDB、LocalStorage 和 SessionStorage 數(shù)據(jù)存儲(chǔ)中。
當(dāng)您通過(guò)鍵檢索值時(shí),ImmortalDB 會(huì):
在每個(gè)數(shù)據(jù)存儲(chǔ)中查找那個(gè)密鑰;
計(jì)算每個(gè)唯一返回值;
將最常見(jiàn)的返回唯一值確定為“正確”值;
返回這個(gè)正確的值。
接著,ImmortalDB 會(huì)“自愈”:如果任何數(shù)據(jù)存儲(chǔ)區(qū)返回的值與所確定的正確值不同,或是根本沒(méi)有值,則將正確的值重寫到該存儲(chǔ)區(qū)。通過(guò)這樣的方式,一致性、可靠性和冗余得到維持。
