Appcachingを使用したオフラインWebアプリケーションがあります。主にPNG画像ファイルで構成される10MB〜20MBのデータ(クライアント側)を提供する必要があります。操作は次のとおりです。
バイナリBLOBストレージを処理するクライアントベースの「データベース」の現在の分析は次のとおりです。
注:PNGのdata:uriエンコーディングを確認するには、次の場所にサンプルを作成しました。 http://jsbin.com/ivefak/1/edit
望ましい/有用な/必要な機能
IndexedDBの実装
私の現在の結果
最終結果は以下に回答として投稿されます
PouchDBは、すべての最近のブラウザー(IE、Chrome、Firefox、Chromeなど、モバイル)など)と多くの古いブラウザーでバイナリブロブをサポートするようになりました。 。
結果PNGスリッピーマップのオフラインBLOBキャッシュ
テスト
ウェブサーバーから取得
ストレージ
ディスプレイ
結果
要件については、他の2つに基づいて新しいポリフィルを開発することをお勧めします:FileSystem API to IndexedDBおよびIndexedDB to WebSQL—最適なオプションです。
前者はChrome(FileSystem API)およびFirefox(IndexedDB)でのBLOBの保存のサポートを有効にし、後者はAndroidおよびiOSのサポートを提供する必要があります( WebSQL )必要なのは、これらのポリフィルを一緒に機能させることであり、難しくはないと思います。
NB:これについてWebで情報を見つけることができなかったため、WebSQLポリフィルを使用してBLOBを保存することがiOSおよびAndroidで機能するかどうかをテストする必要があります。ただし、動作するように見えます:
var sql = ["CREATE TABLE", idbModules.util.quote(storeName), "(key BLOB", createOptions.autoIncrement ? ", inc INTEGER PRIMARY KEY AUTOINCREMENT" : "PRIMARY KEY", ", value BLOB)"].join(" ")
数年前(正確には石器時代ではありません)、署名されたJavaアプレットを使用して、サーバーに同期/更新の要件を問い合わせ、サーバーから適切なファイルをダウンロードして、ユーザーのファイルシステム(データベースではない)。このソリューションは、アプレットを作成して署名する誰かを必要とするが、あなたのために働くかもしれない。データベースソリューションの場合、そのようなアプレットは適切なポートでたとえば、MySQLの3306)。アプレットタグはHtml5で非推奨になったと思いますが、それでも動作します。Androidタブレットでの経験がないため、その部分についてはコメントできません。
マップキャッシングがあります examples (例を開き、領域とズームを検出し、オフラインに切り替えて、検出された領域が利用可能になります)。
がある map.js
-オフラインタイルのマップレイヤー、storage.js
-IndexedDbおよびWebSQLに基づくストレージ実装(ただし、これはパフォーマンスの低い実装をテストするだけです)。
20億都市のサイズに関する追加情報( ミンスク ):