storage.sync
Представляет область хранилища sync. Элементы в хранилище sync синхронизируются браузером. Данные затем доступны во всех экземплярах браузера, в которых пользователь авторизован (например, при использовании учётной записи Firefox в настольных версиях Firefox или учётной записи Google в Chrome) на разных устройствах.
Для Firefox, пользователь должен иметь Add-ons включённой в настройках синхронизации в "about:preferences".
Обратите внимание, что реализация storage.sync в Firefox зависит от идентификатора дополнения. Если вы используете storage.sync, вы должны установить идентификатор для своего расширения, используя ключ browser_specific_settings в файле manifest.json.
Основной сценарий использования этого API — хранение настроек вашего расширения и синхронизация их с различными профилями пользователя.
Квоты хранилища для синхронизированных данных
Браузер накладывает ограничения на объём данных, которые каждое расширение может хранить в области синхронизации:
| Название | Описание | Значение в байтах |
|---|---|---|
| Максимальный общий объём | Максимальный общий объём данных, который каждое расширение разрешено хранить в области синхронизации хранилища, измеряемый с помощью JSON-сериализации каждого значения плюс длина каждого ключа. | 102400 |
| Максимальный размер элемента | Максимальный размер любого отдельного элемента, который каждое расширение разрешено хранить в области синхронизации хранилища, измеряемый с помощью JSON-сериализации значения элемента плюс длина его ключа. | 8192 |
| Максимальное количество элементов | Максимальное количество элементов, которые каждое расширение может хранить в области синхронизации хранилища. | 512 |
Если расширение пытается сохранить элементы, превышающие эти лимиты, вызовы storage.sync.set() отклоняются с ошибкой. Расширение может использовать storage.sync.getBytesInUse(), чтобы узнать, сколько квоты используется.
Процесс синхронизации
В Firefox данные расширений синхронизируются каждые 10 минут или всякий раз, когда пользователь выбирает Синхронизировать сейчас в Настройки > Синхронизация или в учётной записи Firefox. При выполнении браузером синхронизации для каждого сохранённого ключа он:
- сравнивает значение на сервере со значением при последней синхронизации; если они отличаются, значение с сервера записывается в ключ в синхронизированном хранилище браузера.
- сравнивает значения синхронизированного хранилища браузера со значением на сервере; если они отличаются, записывает значение ключа браузера на сервер.
Это означает, что для каждого ключа изменение на сервере имеет приоритет над изменением в синхронизированном хранилище браузера.
Этот механизм, как правило, подходит для данных, таких как настройки пользователя или другие глобальные настройки, изменённые пользователем.
Однако значение ключа может быть обновлено в одном браузере и синхронизировано, а затем обновлено во втором браузере до синхронизации второго браузера, что приведёт к перезаписи локального обновления во время синхронизации. Поэтому этот механизм не подходит для данных, агрегированных по устройствам, таких как количество просмотров страниц или количество использований опции. Для обработки таких случаев используйте storage.sync.onChanged для прослушивания обновлений синхронизации с сервера (например, количество просмотров страниц в другом экземпляре браузера). Затем скорректируйте локальное значение, чтобы учесть удалённое значение (например, обновите общее количество просмотров на основе удалённого счётчика и нового локального счётчика).
Методы
Объект sync реализует методы, определённые в типе storage.StorageArea:
storage.sync.get()-
Извлекает один или несколько элементов из области хранилища.
storage.sync.getBytesInUse()-
Получает объём занимаемого места (в байтах) для одного или нескольких элементов в области хранилища.
storage.sync.set()-
Сохраняет один или несколько элементов в области хранилища. Если элемент существует, его значение обновляется.
storage.sync.remove()-
Удаляет один или несколько элементов из области хранилища.
storage.sync.clear()-
Удаляет все элементы из области хранилища.
События
Объект sync реализует события, определённые в типе storage.StorageArea:
storage.sync.onChanged-
Срабатывает, когда изменяется один или несколько элементов в области хранилища.
Примеры расширений
Совместимость с браузерами
| Рабочий стол | Мобильная версия | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | WebView Android | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | |
sync |
Да | 15 | 53До версии 79 ограничения квоты хранилища не применялись. |
? | Нет | 14["Safari не синхронизирует элементы, сохранённые в области хранилищаsync, т.е. он ведёт себя так же, как область хранилища local.", "Safari 15 и 15.1 ошибочно сохраняют синхронизированные элементы в области хранилища local. Если не удаётся найти синхронизированные элементы, проверьте наличие синхронизированных элементов в области хранилища local и выполните одноразовую миграцию в область хранилища sync."] |
? | ? | Нет | ? | 15["Safari не синхронизирует элементы, сохранённые в области хранилищаsync, т.е. он ведёт себя так же, как область хранилища local.", "Safari 15 и 15.1 ошибочно сохраняют синхронизированные элементы в области хранилища local. Если не удаётся найти синхронизированные элементы, проверьте наличие синхронизированных элементов в области хранилища local и выполните одноразовую миграцию в область хранилища sync."] |
? |
Примечание: Этот API основан на API chrome.storage Chromium. Данная документация взята из storage.json кода Chromium.
© 2005–2023 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/storage/sync