0

私が取り組んでいる Web アプリに問題があり、ここに質問を投稿しましたが、これは少しあいまいで、おそらくあまり役​​に立ちません。私は非常に基本的なサイトを作成し、それをメインのアプリのように構築して、どこが壊れているかを確認することにしました。私はこれを行ったが、すぐにオフライン キャッシュに行き詰まりました。

これは、IIS 7.5 でローカルにホストされている基本的な 3 ページの静的 Web サイトです。フォルダー c:\inetpub\wwwroot\ManifestTesting を作成し、それを Web アプリケーションとして IIS に追加し、.appcache 拡張子に text/cache-manifest の新しい MIME タイプを追加しました。これにはオフラインモード機能があるため、テストには FireFox 9.0 も使用しています。

3 つの HTML ページを作成し、それらを ManifestTesting フォルダーに追加しました。

  • index.htm - このページには、page1.htm と page2.htm への 2 つのリンクが含まれています。
  • page1.htm - ページ 1 というヘッダーのみが含まれています
  • page2.htm - ページ 2 というヘッダーのみが含まれています

したがって、http://localhost/manifesttestingを参照すると、インデックス ページが取得され、2 つのページに移動できます。

次に、manifest.appcache というファイルを作成し、ManifestTesting フォルダーに追加しました。

CACHE MANIFEST

CACHE:
index.htm
page1.htm
page2.htm

index.htm にマニフェスト ファイルへの参照を追加しました。

<html manifest="manifest.appcache">

したがって、すべての履歴を消去して index.htm を参照すると、FireFox は Web サイトがオフラインで使用するためにデータを保存することを許可するかどうかを尋ねてきます。[許可] をクリックし、ブラウザをオフライン モードに切り替えてから、page1.htm に移動しようとしましたが、問題なく動作しました。これまでのところ、すべてが順調です。

今、私が理解していないビットのために。次に、ManifestTesting フォルダーに「pages」という新しいフォルダーを作成し、page1 と page2 をそこに移動しました。新しい場所を参照するようにインデックス内のリンクを更新しました。マニフェスト参照なしで Web サイトを参照すると、以前と同じようにすべて正常に動作します。次に、インデックス内のマニフェスト ファイルを再参照し、マニフェストを次のように更新します。

CACHE MANIFEST

CACHE:
index.htm
pages/page1.htm
pages/page2.htm

次に、履歴を消去して更新すると、Firefox は Web サイトがオフライン データを保存できるようにするよう求め、オフライン モードを有効にしてから、ページ 1 に移動しようとしますが、うまくいきません。FireFox は、オフライン モードであり、Web を閲覧できないと言っています。

私は何を間違っていますか?

4

1 に答える 1

1

ここにはいくつかの可能性があります:

1)「pages/page1.htm」の代わりに「/pages/page1.htm」を入れてみてください

2)また、すべてのリンクとブラウザに入力する内容で大文字と小文字が区別されることを確認してください。('pages/page1.htm'は'pages/ Page1.htm'と同じではありません)

3)履歴をクリアしたとおっしゃいました...テストのためにこの方法で行う場合は、履歴だけでなく、物理ファイルのキャッシュもクリアする必要があります。

4)これがおそらく最も可能性の高い原因です:マニフェストファイルに変更を加え、ブラウザを更新すると、これが起こります(オンラインであると仮定して)

  • ブラウザは最初にキャッシュ内のすべてのファイルをロードバックします
  • 次に、ブラウザはマニフェストファイルをオンラインでチェックします
  • マニフェストファイルが変更されたことを検出すると、新しいファイルのダウンロードに進みます
  • ただし、この時点では、ブラウザが「新しいファイル」をダウンロードするためにオンラインになる前に古いファイルをロードしているため、「古いファイル」は引き続き表示されます。
  • この時点で、もう一度(2回目)更新を押すと、「新しいファイル」を取得する必要があります(オフラインにした後、page1とpage2に移動できるようになります)

これは現在、標準の動作です。一部の人々は、ユーザーに別の更新を行うように促すためにいくつかのイベントハンドラーを配置します(最初の更新後)

于 2012-11-08T04:55:40.720 に答える