6

設計上、クライアント デバイスがオフラインの場合、またはクライアント デバイスがオンラインでサーバーにアクセスできる場合、HTML5 オフライン サポート (AppCache) が機能します。その後、アプリケーションをキャッシュし、デバイスがインターネットにアクセスできないときにブラウザーでアプリケーションを再度開いて (更新して)、ブラウザーは AppCache からアプリケーションを読み込みます。この場合、ブラウザーは appcache マニフェストをフェッチしようとしません(オフラインであることを認識します)。

しかし、デバイスがオフラインでない場合を考えてみましょう。それはまだインターネットに接続しています。しかし、私のサーバーはダウンしています。これにはさまざまな理由が考えられます (ハードウェア障害、AppPool の停止、IIS スロットリング、DNS エラーなど)。この場合、ブラウザでキャッシュされたアプリケーションを開くと、appcache マニフェストを取得しようとし、404 エラー (見つかりません) が発生します。その後、ブラウザはアプリの AppCache をクリアします! そのため、次回の実行時に AppCache から読み込まれず、404 エラー「ページ」が表示されます。オフライン作業はもう必要ありません。

オフライン モードの機能がサーバーにアクセスできない理由に依存しているのは、私には奇妙に思えます。なぜユーザーとして注意する必要があるのですか (インターネットに接続していない、またはサーバーがダウンしている)。

だから私の質問は: デバイスがオンラインであるが、そのサーバーに到達できないときにアプリケーションを動作させる方法を知っている人はいますか?
理想的には、window.applicationCache のエラーイベントをキャッチして、「大丈夫です。キャッシュを使い続けてください。廃止しないでください」と伝えることができるはずです。

4

1 に答える 1

0

これは、アプリケーション キャッシュの仕様では不可能です。

それ以外の場合、マニフェストのフェッチが他の方法で失敗した場合 (サーバーが別の 4xx または 5xx 応答または同等の応答を返す、DNS エラーがある、接続がタイムアウトする、ユーザーがダウンロードをキャンセルする、またはマニフェストのパーサーが失敗するなど)。マジック シグネチャをチェックするとき)、またはサーバーがリダイレクトを返した場合、またはリソースが text/cache-manifest 以外の MIME タイプでラベル付けされている場合は、キャッシュ障害の手順を実行します。

于 2015-06-15T13:15:07.543 に答える