1

私たちは、Dojoを使用したオフライン対応のJavaScriptアプリケーションと、新しいブラウザーで利用可能なストレージおよびオフライン機能に取り組んできました。

アプリケーションは非常に大きいですが、キャッシュからより大きなファイルをロードしているようで、アプリケーションが証書にキャッシュされていることがわかります。アプリケーションキャッシュ機能を使用していましたが、私とChromeが確認できる限り、アプリケーションキャッシュにエラーはありません。

しかし、問題が発生します。どうやら、Dojoはその言語リソースも、接続するサービスを記述したSMDファイルもロードできません。

これらの問題は、対象のブラウザであるwebkit-mobileでよく見られます。

何が間違っているのかについてのアイデアはありますか?

4

3 に答える 3

2

オフライン(ほとんどの場合モバイル)を使用する場合、ほとんどの場合、最適化されたビルドも必要になります。数十のファイルをオフラインにする必要はありません。

XHRはオフラインでは機能しないと思うので、XHRを介してロードするリソース(スクリプト、i18nバンドル、およびhrefを介してトリガーされるその他の動的にロードされるリソースを含む)は、localStorageに格納してから、代わりにloaclStorageからロードするために分岐する必要がありますオフライン時のXHRの。

iPhone、iPad、またはAndroidデバイスで実行している場合は、最適化されたビルドを作成する必要があります。また、ClosureCompilerを使用してビルドをさらに最適化することを検討してください。以下のリンクを参照してください。

http://dojo-toolkit.33424.n3.nabble.com/file/n2636749/Using_the_Dojo_Toolkit_with_the_Closure_Compiler.pdf?by-user=t

于 2011-04-08T05:35:33.030 に答える
1

問題は、dojoがいくつかの初期化XHRリクエストを実行することです。オンラインになり、ローカリゼーションバンドルとRPC機能用の.smdファイルをフェッチします。

XHRはオフラインのapplicationCacheにアクセスできませんが、バンドルファイルとsmdファイルはそこで利用可能ですが、Dojoがそれらを要求したときにそれらは見つかりません。

別の方法は、マニフェストファイルの外にそれらを残すことですが、それはdojoがとにかくオフラインで開始しないことを意味します。

.smdファイルにあるサービス仕様オブジェクトをdojo.rpc.Serviceのコンストラクターに直接追加することで、.smdファイルの問題を修正しました。これは、道場が必要なものをすべて持っていて、もはやそれをフェッチする必要がないことを意味しました。

ローカリゼーションバンドルは異なっていました。最後に、それらがdojo.jsの最後に追加されていることを確認し、dojo.provideステートメントが残りを処理できるようにしました。基本的に、ビルドスクリプト(私たちにとってはbatファイル)を変更して、ビルド後に圧縮されたローカリゼーションバンドルをdojo.jsの最後に配置しました。

これで、dojoをオフラインで開始できます。

于 2011-04-10T12:05:16.243 に答える
0

HTML5アプリケーションキャッシュにマニフェストファイルを使用していますか?その場合、キャッシュするファイルとディレクトリを明示的にリストする必要があります。他のすべてのリソースと同様に、構築されたローカリゼーションバンドルは、マニフェストのCACHEセクションまたはNETWORKセクションのいずれかで説明する必要があります。

于 2011-04-08T02:31:58.473 に答える