Can I increase QUOTA_BYTES_PER_ITEM in Chrome?

前端 未结 1 907
余生分开走
余生分开走 2021-02-06 09:37

Is there any way to increase the chrome.storage.sync.QUOTA_BYTES_PER_ITEM ?

For me, the default 4096 Bytes is a little bit short.

I tried to execute



        
1条回答
  •  挽巷
    挽巷 (楼主)
    2021-02-06 09:58

    No, QUOTA_BYTES_PER_ITEM is there for reference only; it is not a settable value. You could use the value of QUOTA_BYTES_PER_ITEM to split an item up into multiple items, though:

    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);
    }
    

    Then write an analogous fetch function that fetches by key and glues the object back together.

    0 讨论(0)
提交回复
热议问题