7

chrome.storage.sync.QUOTA_BYTES_PER_ITEM を増やす方法はありますか?

私にとって、デフォルトの 4096 バイトは少し短いです。

実行してみた

chrome.storage.sync.QUOTA_BYTES_PER_ITEM = 8192;

ただし、実際の制限は変わらないようです。

これどうやってするの?

4

2 に答える 2

9

いいえ、QUOTA_BYTES_PER_ITEM参考用です。設定可能な値ではありません。ただし、の値を使用してQUOTA_BYTES_PER_ITEM、アイテムを複数のアイテムに分割できます。

function syncStore(key, objectToStore, callback) {
    var jsonstr = JSON.stringify(objectToStore);
    var i = 0;
    var storageObj = {};

    // split jsonstr into chunks and store them in an object indexed by `key_i`
    while(jsonstr.length > 0) {
        var index = key + "_" + i++;

        // since the key uses up some per-item quota, see how much is left for the value
        // also trim off 2 for quotes added by storage-time `stringify`
        var valueLength = chrome.storage.sync.QUOTA_BYTES_PER_ITEM - index.length - 2;

        // trim down segment so it will be small enough even when run through `JSON.stringify` again at storage time
        var segment = jsonstr.substr(0, valueLength);           
        while(JSON.stringify(segment).length > valueLength)
            segment = jsonstr.substr(0, --valueLength);

        storageObj[index] = segment;
        jsonstr = jsonstr.substr(valueLength);
    }

    // store all the chunks
    chrome.storage.sync.set(storageObj, callback);
}

次に、キーでフェッチしてオブジェクトを結合する類似のフェッチ関数を作成します。

于 2012-11-14T15:04:53.360 に答える