Могу ли я увеличить квоту байтов на элемент в Chrome?
есть ли способ увеличить chrome.место хранения.синхронизация.QUOTA_BYTES_PER_ITEM ?
для меня по умолчанию 4096 байт немного короче.
Я пытался выполнить
chrome.storage.sync.QUOTA_BYTES_PER_ITEM = 8192;
однако, похоже, что фактический предел не меняется.
Как я могу это сделать?
2 ответов
нет, 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);
}
затем напишите аналогичную функцию выборки, которая извлекает ключом и склеивает объект обратно вместе.
Я создал малого класса для моего расширения, который обрабатывает сохранение и извлечение строк больше QUOTA_BYTES_PER_ITEM
с chrome.storage.sync
. Я основал свой код на фрагменте, предоставленном @apsillers.