グーグルアドオン開発 backgroundの作成(event_page化)

マニフェストのbackgroundに設定することで、バックグラウンド処理が機能する。
スクリプトは複数登録することができる。

ここのスクリプトにjQueryを入れているアドオンをよく見るけどどうだろうか?
開発コストを下げるためには必要だろうが、個人的にかっこ悪い気がする。(容量も気になる)

persistentオプションでスクリプトの永続化が設定できる。
永続化Trueで常にbackgroundのスクリプトをメモリに乗せる。
永続化False(イベントページ化)で必要な時のみbackgroundのスクリプトをメモリに乗せる。(Google推奨)
このオプションで少し戸惑ったが、アドオンの性質で
ON/OFFを切り替えたほうがいいだろう。

※メモリに乗るかどうかが変わるだけで、background.jsの処理が流れる回数は変わらない。
(persistentのON/OFFでプログラムの機能は変わらない)
ただ、特定の条件時にメモリを使用し、それ以外はスワップするだけ。

問題はこの特定の条件が大切。
0.初期開始時、まぁこれは無難(ブラウザ再開時、ホームは適応されないかも?)
1.ページからgetBackgroundPageが呼ばれた場合、
そのページ(Option、Popup等)が閉じるまでメモリに乗る。
2.メッセージが送付された場合、リスナーイベントが終了するまで。
3.ポートが確立された場合、ポートがクローズするまで。
(0~3は微妙にメモリ解放までにラグが有る。)

以上の点を踏まえて、処理能率の高いプログラムを作るための注意点。
1.アドオン機能のページ(OptionやPopup)にへgetBackgroundPageの利用タイミングに注意。
よくアドオンのソースを覗いていると画面の初期表示時や共通処理にグローバル変数にgetBackgroundPageの値を格納し、
処理のどこでもバックグラウンドの処理を呼び出せるようにしていることがある。
場合によりナンセンスなので注意。
2.妥当
3.ポート確立してる間はbackgroundがメモリに乗る、content_scriptからポートコネクトする場合は
タイミングを見計らったほうがいい。
コンテンツを開くたびに必ずポート確立していると、せっかくのpersistent(永続化OFF)が無駄になる。

■補足
アドオンの機能(background)が頻繁に呼び出されるのであれば、故意に永続化する価値はある。

	

コメントを残す

メールアドレスが公開されることはありません。

画像を追加できます