Firefox SDK アドオンで TTL を使用して JSON 値をローカルに保存する簡単な方法はありますか?
私が知る限り、Firefox は'simple-storage'
ライブラリの使用を強制します。jStorageなどのサードパーティ ライブラリを使用できません。
Firefox SDK アドオンで TTL を使用して JSON 値をローカルに保存する簡単な方法はありますか?
私が知る限り、Firefox は'simple-storage'
ライブラリの使用を強制します。jStorageなどのサードパーティ ライブラリを使用できません。
いいえ、simple-storage
DOM ストレージはまったく別のものです。つまり、DOM ストレージでの作業を目的とした jStorage のようなライブラリを使用することはできません。
繰り返しますが、JSON の保存と TTL の実装は、自分で実装するのに十分簡単です。JSON の場合は、 と を使用JSON.parse
しJSON.stringify
ます。TTL の場合は、TTL 値をどこかに保存し、必要に応じて検索するだけです。このようなもの:
var AdvancedStorage = {
_storage: require("simple-storage").storage,
// Keep TTL data in a special storage field
_ttlData: null,
_readTTLData() {
if (this._storage._ttl)
this._ttlData = JSON.parse(this._storage._ttl);
else
this._ttlData = {};
},
_saveTTLData() {
this._storage._ttl = JSON.stringify(this._ttlData);
},
// Special data manipulation functions
set: function(key, value, options) {
this._storage[key] = JSON.stringify(value);
this.setTTL(key, options && "TTL" in options ? options.TTL : 0);
},
get: function(key, default) {
if (!this._storage.hasOwnProperty(key))
return default;
// Check whether setting has expired
if (!this._ttlData)
this._readTTLData();
if (this._ttlData.hasOwnProperty(key) && this._ttlData[key] <= Date.now())
return default;
return JSON.parse(this._storage[key]);
},
deleteKey: function(key) {
delete this._storage[key];
},
// Setting the TTL value
setTTL(key, ttl) {
if (!this._ttlData)
this._readTTLData();
if (ttl > 0)
this._ttlData[key] = Date.now() + ttl;
else
delete this._ttlData[key];
this._saveTTLData();
}
};
私はこのコードをテストしませんでしたが、この種の機能を実装するために必要なほとんどすべてのコードはこれであるはずです。