web-dev-qa-db-ja.com

スマートフォンでのJavaScriptメモリとHTML5LocalStorageの制限

モバイルデバイス(スマートフォン)で動作するWebアプリケーションを開発します。アプリケーションでは、オペレーターはいくつかのビジネスデータを入力し、オペレーターはネットワーク信号が利用できない可能性のある閉鎖されたスペースにもこのデータを入力します。

したがって、オフラインモードが必要です。このようなモードでは、オペレーターはデータを入力できます。データはブラウザー側に保存され、ネットワークが使用可能になった後、データはサーバーに送信され、データベースに保持されます。

私は2つの可能な解決策を見つけました:

  1. 値をJavaScriptメモリに保存します。ブラウザのクラッシュやページのリロードには耐えられません。
  2. 値をHTML5 LocalStorageに保存します。 HTML5をサポートするブラウザーが必要であり、このストレージが永続的であることを保証します(ブラウザーアプリを閉じた後のフラッシュはありません)。

私はまだスマートフォン用のWebアプリケーションを開発しておらず、スマートフォンの経験もほとんどないので、質問があります。

特定のスマートフォン(Android、Windows Mobile、Windows Phone、iPhone)の特定のブラウザーのJavaScriptメモリとHTML5 LocalStorageの制限は何ですか?

理論的にはHTML5LocalStorageは5MBであり、JavaScriptメモリは少なくとも5MBであるデバイスリソースに依存する必要があることを私は知っていますが、スマートフォンではどうでしょうか?例: Windows Phone 6.5で、古いIEにuserDataを使用している jStorage ページがデータを永続化していないことに気付きました。このデバイス(限られたリソースで、ページが更新されるたびにフラッシュされる可能性があります)。

updateローカルストレージ値の最大サイズの質問への回答 ローカルストレージをテストする単純なアプリケーションへの素晴らしいリンクがあります制限があり、私が行ったテストによると、ローカルストレージはOpera Mobile 11でブラウザの制限なしに増やすことができます。ユーザーは、より多くのスペースの要求を受け入れる必要があります。制限はあります。デバイスの制限。

アプリのQRコードは次のとおりです。

QR code

そしてアプリ自体: http://arty.name/localstorage.html

19
Danubian Sailor

私の経験では、上記のプラットフォームで最低5MBを確実に賭けることができます。データをそのレベル未満に保つと、かなり安全になります。

この記事を読んでください。 http://diveintohtml5.info/storage.html いくつかの素晴らしい情報がありますが、すべてが正確であるとは限りません。特に、制限を超えられないと言っている部分はそうです。
iPhoneでは、制限に達すると、電話がユーザーにもっと多くのスペースを許可するかどうかを尋ねるという事実を知っています。 (正確ですが、完全ではありません)

Androidプラットフォームでは、ヒープメモリ制限は12MBに設定されています。他のプラットフォームについてはわかりません。ある種のWebコンテナ(Webkitまたはその他)で実行するため、心配する必要はありません。コンテナ自体は、メモリの管理とファイルキャッシュの実装に非常に優れており、フットプリントを最小限に抑えます。

最後にメモリの最適化などを残すことをお勧めします。誰が知っている、あなたもそれを必要としないかもしれません。時期尚早に最適化しないでください。

PS:
Phonegapを見てください: http://phonegap.com/

6
n4rzul

リンクをテストしました: localstorageを確認してください

  • クローム16.0.912
  • iPad2 IOS 5.0.1
  • iPhone 3GS

すべて2.600.000文字まで続きます。 UTF-8は4バイトなので、4を掛けるだけで、合計バイト数が得られます。

10400000バイト= 9,918メガバイト

5

Android 2.3.5を使用している私の低HTCWildfire Sでは、ページが2,600,000で停止しました。非常に高くなっていることに感銘を受けました。

Firefox 16.0.1デスクトップでは、5,200,000で停止しました。これは、about:configクォータが定義されているものと一致しています。

0
MikeC