質問: javascriptのメモリの抑制について教えてください。 現在、モバイル等からのcamera画像の取込などを行おうとしていますが、 普通のfileApiを使うと読み込める場合もありますが、Androidではメモリオーバーのメッセージ iphoneではページの再読込される現象に直面しています。 確かに、同時にGoogleのOCRデータを取り込んでたりでいっぱいいっぱいなのかな、と思ってます ※このデバッグ?の仕方までは理解できていません。 対処方法としては、読み込みをblobにしたり、ローカルファイル化したり、canvasに画像を貼り縮小化するなどが ありそうですが、これら画像データやOCR結果(多分数MB)のデータを、localStorageに保存する、というアクションは 何ら、メモリの節減にはならないでしょうか? イメージとしてはストレージにいれようが、javascript内で読み込まれているのでなんの意味もない...とは思ってますが 整理のためにご教授いただけましたら幸いです。 ※補足...スキル(知識)が追いつかないため、Bootstrap,jQueryに頼っている状態です。
回答: localStorageはそもそもブラウザの領域に保存するやり方です。 ブラウザによって上限が変わるものです。 ブラウザ上に保存「している」状態なので、その分メモリは食い続けていることになると言っても過言はなさそうです。 参考記事:ローカルストレージに簡単な解決策はない > > 重要な課題:ひどいパフォーマンス > > localStorage には、多くのdrawbackがある。そしてこれらは、ドキュメンテーションや巷の「HTML5 チュートリアル」にはあまり書かれることがない。パフォーマンスにシビアな開発者は、この API を使うことに強く反発している。 > > このブログ (訳註: Mozilla Hacks) で数週前に公開した画像とファイルを localStorage に保存するという記事にはすごい数のコメントが寄せられた。また、localStorage の悪さについて、さらにそれよりも長い議論が内部のメーリングリストで繰り広げられた。localStorage が持つ主要な問題は次のとおりだ。 > > localStorage は事実上同期的だ。つまり、ロードされているときに文書のレンダリングをブロックしてしまう > > localStorage はファイルの I/O が絡む。つまり、ハードディスクに書き込みを行うため、システムによっては (インデックス作成やウイルススキャンなどで) 時間がかかることがある > > 開発者のマシンでは OS がこうしたリクエストをキャッシュしてしまうため、問題が小さなものとみられてしまうが、エンドユーザは Web サイトロード時のブロックによって数秒待たされることになる > > 速く動いているように見せるため、ブラウザは最初のリクエスト時にデータをメモリ上にロードする ― つまり多くのタブを開くことで多くのメモリを食ってしまう > > localStorage は永続的なため、そのサイトやサービスをもう使わなくなっても、データがブラウザの立ち上げ時にロードされ続けてしまう > > これらの問題は Mozilla パフォーマンスチームの Taras Glek によるポストや、Nokia の Andrea Giammarchi のポストによってより詳細に語られている。 > > 要は、**localStorage でパフォーマンス向上と謳っている数多くの記事は、まったくもって間違っているということだ。** > > >