HTML localStorage を利用する小さなプロジェクトを構築していました。localStorage の 5 MB の制限にはほど遠い状態でしたが、とにかくストレス テストを行うことにしました。
基本的に、データ オブジェクトを 1 つの localStorage オブジェクトにロードして、その制限をわずかに下回るまで、さまざまな項目の設定と取得を要求する必要がありました。
次に、javascript の Date オブジェクトとイベント ハンドラーを使用して、非公式に setItem と getItem の実行時間を計測しました(HTML で get と set をボタンにバインドし、=P をクリックしただけです)。
パフォーマンスは恐ろしく、リクエストは 600 ミリ秒から 5,000 ミリ秒かかり、メモリ使用量は最悪の場合 200 MB 近くになりました。これは、MacOSX 上の単一の拡張機能 (Google Speed Tracer) を備えた Google Chrome にありました。
Safari では、基本的に常に >4,000ms です。
Firefox は驚きで、150 ミリ秒を超える速度はほとんどありませんでした。
これらはすべて、基本的にアイドル状態で行われました。邪魔になる YouTube (Flash) はなく、多くのタブはなく (Gmail 以外は何もありません)、バックグラウンド プロセスとブラウザ以外のアプリケーションは開いていません。メモリを集中的に使用するタスクが発生すると、それに比例して localStorage も遅くなりました。FWIW、私は 2008 年後半の Mac -> 2GB DDR3 RAM を搭載した 2.0Ghz Duo Core を実行しています。
===
だから質問:
- さまざまなキーと値のサイズ、およびさまざまなブラウザーで、localStorage の get と set に対してある種のベンチマークを行った人はいますか?
- 私は、Firefox とその他の間のレイテンシとメモリ使用量の大きな差異は、Gecko と Webkit の問題であると想定しています。これらのコードベースに飛び込むことで答えが見つかることは知っていますが、ブラウザ間の効率とレイテンシの大きな違いを説明するために、これら 2 つのエンジンでの localStorage の実装に関する詳細を他の誰かが説明できるかどうかを知りたいです。 ?
残念ながら、問題を解決できるかどうかは疑問ですが、少なくともブラウザの現在の状態での制限を理解することで、解決に近づくことができます。
ありがとう!