Как использовать chrome.storage вместе с удаленно размещенной базой данных для расширения chrome?
Я работаю над расширением Chrome, которое должно хранить данные своего пользователя. Для этого я использую сервер, на котором запущена база данных mysql. Но в настоящее время любое добавление или изменение данных запускает запрос к размещенному серверу.
Расширение Chrome обеспечивает chrome.storage.local
API, который подходит для хранения данных до 5 МБ. Я хочу воспользоваться этим API хранилища, чтобы уменьшить количество запросов к моему размещенному серверу, используя его как временное хранилище.
Я планирую использовать chrome.storage.onChanged.addListener
а также chrome.storage.local.getBytesInUse
проверить, пересекает ли хранимые данные определенное пороговое значение, а затем запустить только ajax-запрос к удаленному серверу для сохранения данных. После успешного ответа старые данные в chrome.storage будут удалены.
Но есть вероятность потери некоторых новых данных, которые создаются в процессе цикла запрос / ответ с сервера.
Как я могу предотвратить потерю данных? Есть ли альтернативное решение этой проблемы оптимизации - уменьшение количества запросов к удаленному серверу от расширения?
Благодарю.
1 ответ
Это не совсем вопрос о расширениях Chrome. Это больше о постоянных базах данных, которые работают в автономном режиме и разумно синхронизируются. Что бывает очень сложно сделать правильно.
Самое простое решение - использовать chrome.storage.sync. Это дает вам постоянство бесплатно с оговоркой ограниченного хранения. Вы обязательно должны увидеть, если это возможно, прежде чем пытаться другие варианты.
В противном случае, я рекомендую изучить сторонние варианты, прежде чем предлагать собственное решение. Возможно, вы слышали о прогрессивных веб-приложениях, которые работают в автономном режиме и синхронизируются при наличии Интернета.
Статья о преимуществах прогрессивных веб-приложений
Посмотри на них. Это того стоит. в противном случае вы просто будете создавать хаки поверх хаков, пытаясь заставить синхронизацию работать.
... еще одна вещь... не забудьте добавить URL вашей удаленной базы данных в разрешения вашего манифеста.