質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Chrome extension

Chrome拡張機能

Q&A

解決済

2回答

1065閲覧

chrome.storageに効率的に値を追加する方法

BTB

総合スコア136

Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Chrome extension

Chrome拡張機能

0グッド

1クリップ

投稿2021/12/19 11:15

相談事項

chrome.storageにデータを次々に追加していくような場合の実装方法を模索しています。
良い方法をご存じでしたらご教示いただけると幸いです。

前提

chrome拡張機能を作成しており、chrome.storage.localにデータをため込むような仕様にしています。

今の実装方法

chrome.storageにデータを追加する際に、

  1. chrome.storageから全データ(旧)を読み込み
  2. 1で読み込んだデータ + 追加したいデータ = 全データ(新)
  3. chrome.storageに全データ(新)を書き込み

を毎回実行させています。

データのイメージ

具体的には下記のように、レコードが次々に追加されていくような動きをします。
全データ(旧):[1,2,3]
追加したいデータ:4
全データ(新):[1,2,3,4]

今の問題点

上記の方法はデータのサイズが大きくなるほど処理が重たくなるため、
仮に、保存されたデータが10MBほどあり、10秒間で3回レコードを書き込むようなことが起きた時に、
その都度、10MBを読み込んで追記して、保存して、、、を3回短時間で繰り返すため、
あまり良い方法ではないと思っています。

その他

グローバル変数か何かに全データを常に保持しておき、
10秒に1回、変数に更新があったかチェックをし、
更新があれば、chrome.storageに書き込む

のような処理も検討をしてみましたが、他にも方法があるのではないかと思いご相談をさせていただいております。

以上、よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

グローバル変数か何かに全データを常に保持しておき、
10秒に1回、変数に更新があったかチェックをし、
更新があれば、chrome.storageに書き込む

これは当然実施するとして、ストレージアクセスの時間が気になるなら、1つのキーにすべてのデータを保存するのではなく、N個毎に別のキーにしてはどうでしょうか。key0 はデータの0番目からN-1番目、key1 はN番目から2N-1番目、key2 は2N番目から3N-1番目、のように。

投稿2021/12/20 01:30

int32_t

総合スコア21695

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

BTB

2021/12/20 11:35

なるほど!たしかにその方法もありますね!ありがとうございます。
guest

0

変数に取っておけば毎回読み込む必要はないと思います
また基本的に個別データで保持すれば不要な書き込みも減らせると思います
(サイズの大きなデータをstorageで管理すべきかどうかは検討が必要そうですが)

投稿2021/12/20 00:52

yambejp

総合スコア116732

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

BTB

2021/12/20 11:36

回答ありがとうございます。変数で常に保持するような挙動にしようと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問