2

フルスクリーンモードで動作することを目的としたiPad用の小さなHTML5 Webアプリケーションを開発しています(つまり、独自のAppleメタタグがあり、ホーム画面に追加されます):

<meta name="apple-mobile-web-app-capable" content="yes" />

アプリケーションは基本的に AJAX 経由でデータを取得し、ユーザーに表示します。AJAX データは外部 (別のドメイン、別のサーバーから) です。クロスオリジン リクエスト用のシステム セットアップがあり、オンライン モードで動作します。つまり、静的データはサーバーAにあり、動的データはサーバーBにあります。

適切なキャッシュ マニフェスト ファイルを作成し、サイトのすべての静的コンテンツ (HTML、CSS、画像、JS) をリストNETWORK: *し、最後にセクションを配置しました。これにより、すべての動的コンテンツ (AJAX) が常にネットワークから取得されます。リクエストが失敗した場合、偽のコンテンツを表示することにより、アプリケーションは「正常に」失敗します。

上記の設定では、次のことが起こります。

  1. オンライン中にアプリケーションを実行すると、すべてが機能します;)
  2. iPad で WiFi を無効にすると (純粋なオフライン モード)、すべてが期待どおりに機能します - アプリケーションはオフライン コンテンツにフォールバックします
  3. ネットワークに再度接続しても、静的コンテンツ サーバー (すべてがキャッシュされているサーバー) をオフラインにすると、アプリケーションは起動しません。スプラッシュスクリーンでしばらく過ごした後、ポップアップが表示され<app> could not be opened because it could not connect to the server.ます; [閉じる] または [再試行] を選択できます。

上記のポイント 3 は、私がアプリケーション キャッシュをいじり始めた唯一の理由だったので、私を夢中にさせるものです。マニフェスト ファイルにアクセスできない場合、iPad Web アプリがキャッシュされたコンテンツにフォールバックしないのはなぜですか? (404 ではなく、サーバーがオフラインです)

HTML5 iphone offline webappへの回答は完全に間違っていますか? そうでない場合、iPadでこの動作を実現するにはどうすればよいですか?

4

1 に答える 1

1

ポイント 2 と 3 はまったく異なるシナリオであるため、同じ動作を期待することはできません。

ポイント 3 では、デバイスはオンライン モードのときにキャッシュされたコンテンツにフォールバックできません。これは、ユーザーがサーバーに接続しているかどうかをユーザーが知る方法がないためです。

つまり、オフライン モードでは、ユーザーはそれを認識しており、キャッシュされたデータを使用していることを認識しています。しかし、オンライン モードでは、サーバーからデータを取得することを期待しています。サーバーが利用できない場合、ユーザーはこれに注意する必要があります。サーバーが利用できず、キャッシュされたデータに直接送信された場合、実際には接続されていないのに接続されていると考えて、サーバーエラーは彼に隠されます.

たとえば、Web ブラウザーはページをキャッシュして、オフライン モードで表示することができます。しかし、オンライン モードで利用できないページを開こうとすると、エラー メッセージが表示されることが予想されます。ページのキャッシュ バージョンではなく、警告が表示されることはありません。必要に応じてオフライン モードに移行して、キャッシュされたページを表示できますが、正しい動作はユーザーにエラーを表示することです。

于 2011-08-18T08:23:27.067 に答える