有沒有什麼辦法可以增加chrome.storage.sync.QUOTA_BYTES_PER_ITEM?我可以在Chrome中增加QUOTA_BYTES_PER_ITEM嗎?
對我來說,默認的4096字節有點短。
我試圖執行
chrome.storage.sync.QUOTA_BYTES_PER_ITEM = 8192;
然而,似乎是實際的限制並沒有改變。
我該怎麼做?
有沒有什麼辦法可以增加chrome.storage.sync.QUOTA_BYTES_PER_ITEM?我可以在Chrome中增加QUOTA_BYTES_PER_ITEM嗎?
對我來說,默認的4096字節有點短。
我試圖執行
chrome.storage.sync.QUOTA_BYTES_PER_ITEM = 8192;
然而,似乎是實際的限制並沒有改變。
我該怎麼做?
不,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);
}
然後編寫出鍵和膠水對象取回來一起類似的取功能。
你的代碼似乎有一個無限循環。請將'while'循環的最後一行更新爲'jsonstr = jsonstr.substr(chrome.storage.sync.QUOTA_BYTES_PER_ITEM);'。 –
你還需要一個'i ++'的地方。 –
另請注意,當Chrome檢查chrome.storage.sync.QUOTA_BYTES_PER_ITEM時,它會計算所保存值的長度,並計算**鍵**的長度。因此,當使用'substr'時,你需要使用'chrome.storage.sync.QUOTA_BYTES_PER_ITEM - currentKeyLength'。 –
我爲我的擴展程序創建了一個small class,它處理從chrome.storage.sync
保存和檢索比QUOTA_BYTES_PER_ITEM
更長的字符串。我基於@apsillers貢獻的代碼片斷編寫代碼。
注意:截至1/15/16,QUOTA_BYTES_PER_ITEM的(默認)值現在爲8K。 –