アップルパイ技術メモ

活動してて貯まったノウハウを吐き出す場所。

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
    });

同じく置き換え。