- From: Jan Varga <jan.varga@gmail.com>
- Date: Fri, 6 Dec 2013 16:19:37 +0100
- To: Webapps WG <public-webapps@w3.org>
- Message-ID: <CAB1sDKxxCrCS4wr7XBKY2WPxRmfOTL8dhwyC--T58gA4YntMRQ@mail.gmail.com>
IndexedDB implementation in Firefox 26 (the current beta) supports a
new storage type called temporary storage.
In short, it's a storage with LRU eviction policy, so the least
recently used data is automatically deleted when
a limit is reached. Chrome supports something similar [1].
Obviously, the IndexedDB spec needs to be updated to allow specifying
different storage types.
We might need to add other parameters in future so we propose creating
a dictionary with a "version" and
"storage" property for now.
Here is the current interface:
interface IDBFactory { IDBOpenDBRequest open (DOMString name,
[EnforceRange] optional unsigned long long version);
IDBOpenDBRequest
<https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#idl-def-IDBOpenDBRequest>
deleteDatabase (DOMString name); short cmp (any first,
any second);
};
and the interface with the dictionary:
interface IDBFactory {
IDBOpenDBRequest open (DOMString name, [EnforceRange] unsigned
long long version);
IDBOpenDBRequest open (DOMString name, optional IDBOpenDBOptions options);
IDBOpenDBRequest deleteDatabase (DOMString name, optional
IDBOpenDBOptions options);
short cmp (any first, any second);
};
enum StorageType { "persistent", "temporary" };
dictionary IDBOpenDBOptions
{
[EnforceRange] unsigned long long version;
StorageType storage;
};
Some simple examples:
Example 1a - Opening a database in default storage:
var request = indexedDB.open('AddressBook', 15);
request.onsuccess = function(evt) {...};
request.onerror = function(evt) {...};
Example 1b - Deleting a database in default storage:
var request = indexedDB.deleteDatabase("AddressBook");request.onsuccess
= function(evt) {...};
request.onerror = function(evt) {...};
Example 2a - Opening a database in temporary storage:
var request = indexedDB.open("AddressBook", { version: 15, storage:
"temporary" });request.onsuccess = function(evt) {...};
request.onerror = function(evt) {...};
Example 2b - Deleting a database in temporary storage:
var request = indexedDB.deleteDatabase("AddressBook", { storage:
"temporary" });request.onsuccess = function(evt) {...};
request.onerror = function(evt) {...};
What do you think ?
[1] https://developers.google.com/chrome/whitepapers/storage
Jan
Received on Friday, 6 December 2013 15:20:05 UTC