WebExtensionsを使用してChrome拡張機能をFirefoxに移植しています。WebExtensions経由でFirefoxのbrowser.storage.localのサイズを取得
StorageArea.getBytesInUse();
はFireFoxではサポートされていませんが、ローカルストレージオブジェクトの合計サイズを取得する回避策はありますか?
ストレージが限界に近づいたときにclearCache関数を呼び出す必要があります。ここで
WebExtensionsを使用してChrome拡張機能をFirefoxに移植しています。WebExtensions経由でFirefoxのbrowser.storage.localのサイズを取得
StorageArea.getBytesInUse();
はFireFoxではサポートされていませんが、ローカルストレージオブジェクトの合計サイズを取得する回避策はありますか?
ストレージが限界に近づいたときにclearCache関数を呼び出す必要があります。ここで
は、あなたが使用することができます何かの始まりである:ここ
browser.storage.local.get(null)
.then(store => {
var bytes = 0;
for (var p in store) {
var entry = store[p];
switch (typeof(p)) {
case 'number':
bytes += 8;
break;
case 'boolean':
bytes += 4;
break;
case 'string':
bytes += (entry.length * 2);
break;
case 'undefined':
bytes += 0;
break;
case 'object':
if (entry === null) {
bytes += 0;
} else {
if (entry.byteLength) {
bytes += entry.byteLength;
} else if (entry.buffer) {
bytes += entry.buffer.byteLength;
} else {
// todo: recrusively run this on all entries
}
}
break;
case 'array':
// todo: recursively run this on all elements
break;
default:
if (
}
}
});
.catch(ex => console.warn('run borwser.storage.local.get again as it hit error, ex:', ex));
ソリューションは、いくつかの再帰的なものを提供 - (HTTPS、どうやら `.set` [インターセプト例外]の現在のFF実装をhttps://stackoverflow.com/a/6351386/1828637
ありがとう、私はすでにいくつかのスクリプトを持っていますが、私は両方を比較します。あなたのスクリプトはライセンスを持っていますか? @JuliusS。 –
- 私はそれを書いただけで致命的なものはなく、ちょうどそれを盗んで行ってしまいました。私はこれに返答していたので、数分でそれをやりました。 – Noitidart
を:/ /dxr.mozilla.org/mozilla-central/source/toolkit/components/extensions/ExtensionStorage.jsm#119)ので、保存されたデータ全体を定期的に取得し、シリアル化された長さ(たとえば5MB)を確認する必要があるでしょう。 – wOxxOm