2015-04-19 3 views
2

Мое расширение будет сохранять данные, как это в строку, используя Chrome.Storage.Sync.Set, которые я затем интерпретировать с регулярным выражением/что-то подобное:Квота хранения для Chrome.Storage.Sync?

<ID>TEXTBOX</ID><STYLE>BORDER:1PX SOLID BLACK; BACKGROUND-COLOR:YELLOW; 
FONT-SIZE:18PX; FONT-FAMILY:ARIAL</STYLE><OTHER></OTHER> 

Я надеюсь, поставить все сохраненные данные в одном пункте хранения. то есть:

<ID>TEXTBOX</ID><STYLE>BORDER:1PX SOLID BLACK; BACKGROUND-COLOR:YELLOW; 
FONT-SIZE:18PX; FONT-FAMILY:ARIAL</STYLE><OTHER></OTHER> 
<ID>TEXTBOX</ID><STYLE>BORDER:1PX SOLID BLACK; BACKGROUND-COLOR:YELLOW; 
FONT-SIZE:18PX; FONT-FAMILY:ARIAL</STYLE><OTHER></OTHER> 
<ID>TEXTBOX</ID><STYLE>BORDER:1PX SOLID BLACK; BACKGROUND-COLOR:YELLOW; 
FONT-SIZE:18PX; FONT-FAMILY:ARIAL</STYLE><OTHER></OTHER> 
<ID>TEXTBOX</ID><STYLE>BORDER:1PX SOLID BLACK; BACKGROUND-COLOR:YELLOW; 
FONT-SIZE:18PX; FONT-FAMILY:ARIAL</STYLE><OTHER></OTHER> 

Эта страница here говорит для каждого отдельного элемента «в хранилище синхронизации, как измерено с помощью JSON stringification его стоимости плюс его длины ключа.», предельный размер 8192 байт. Насколько я знаю, могу ли я преодолеть предел? Скажем, если у меня было 40 идентификаторов.

ответ

4

Да. Да, вы, вероятно, перейдете через limit. Ваш текущий пример с 4 идентификаторами составляет примерно полкилограмма. Таким образом, вы закончите с 64 уже.

Тогда ваша set операция потерпит неудачу, и в вашей функции обратного вызова chrome.runtime.lastError будет установлено:

chrome.storage.sync.set(data, function() { 
    if(chrome.runtime.lastError) { 
    // Uh-oh.. 
    } 
}); 

ли примечание:

  • Если вы на самом деле не нужно синхронизировать все эти данные на разных устройствах , используйте chrome.storage.local. Он имеет гораздо более щедрую квоту в размере 5 242 880 байт.
  • ..что удаляется, если вы запрашиваете разрешение "unlimitedStorage".
  • В документации Google ставит его, в моде несколько насмешливый:

    chrome.storage не большой грузовик. Это серия трубок. И если вы не понимаете, эти трубки могут быть заполнены, и если они заполняются, когда вы вставляете свое сообщение, он попадает в очередь, и это задерживается любым, кто вкладывает в эту трубку огромное количество материала.

    Для хранения в формате Sync требуется поддержка инфраструктуры Google - и они не желают выпускать их бесплатно в неограниченном количестве.

  • Это совершенно неэффективно, чтобы поместить все эти данные в хранилище. Проанализируйте его и сохраните результаты анализа - вы получите более чистые данные на складе.

P.S. HTML is not a regular language.

+0

Привет, спасибо за ваш ответ, я отметю, что он завершен всего лишь еще одним Q - предложите ли вы использовать Chrome.Storage.Local или HTML5 Local Storage? – Wickey312

+0

[window.localStorage vs chrome.storage.local] (http://stackoverflow.com/q/24279495/934239) – Xan

+0

отличный ответ, спасибо! У меня достаточно данных, которые мне нужно использовать 'chrome.storage.local', а не' chrome.storage.sync'. –

Смежные вопросы