google chrome extension開発 ストレージを無制限化する
表題通り。いつの間にか俺俺開発のyoutubeタイムテーブル式メモ帳の保存が利かなくなっていた。
なんじゃ? と思ってコンソールを開くと「Unchecked runtime.lastError: QUOTA_BYTES quota exceeded」というエラーが発生していた。軽く調べるとストレージの容量制限に引っかかっていたらしい。
データ保存に何も考えず全てのデバイスで同期するよう、同期保存を使っていたがこれがよろしくなかった。hmmn。軽く調べると、従来だとデータベースなどに保存するのが普通だったみたいだが、最近この制限が外れたらしい。
ChromeのStorageモジュールで大規模データを扱う | monolithic kernel
参考。
なのでさくっと改造する。syncをlocalにするだけ。簡単。
"permissions": [ "https://www.youtube.com/*", "storage", "unlimitedStorage" ],
permissionsに「unlimitedStorage」を追加。
set
let item = {[uri]: $("#sukoArea").val()}; //chrome.storage.sync.set(item); chrome.storage.local.set(item);
syncから置き換え。
get
// chrome.storage.sync.get([uri], function (items) { chrome.storage.local.get([uri], function (items) { //hogehoge });
同じく置き換え。