これは基本的に、回答されていない SO の質問と同じです: Offline Web App not caching on Firefox but ok on Chrome
私は同じ問題を経験しており、キャッシュマニフェストを実装しようとする難解な謎とトラップを理解しようとしている人に役立つ可能性があるため、もう少し情報を提供します。
問題: ページの再読み込み/更新をクリックすると、オフライン キャッシュからページが再読み込みされるはずですが、そうではありません。
Chrome 23 では正常に動作します。インターネットから切断してページを更新すると、正常に読み込まれ、コンソールに Application Cache NoUpdate イベントが表示されます。
ただし、Firefox 15.0.1 では 404 ページが表示されます。
トラブルシューティング (Firefox): Firebug に移動し、DOM をクリックしてから、applicationCache をクリックします。ステータスは 0 を示します。これは、キャッシュされていない (ページがオフラインで保存されていない) ことを意味します。
トラブルシューティング (Firefox): [Firefox オプション] -> [詳細設定] に移動し、[オフライン Web コンテンツ] と [ユーザー データ] を確認します。私のドメインがオフラインで使用するために 1.4 MB のデータを使用していることを示しています。(これは、ページがキャッシュされているかどうかを確認するのに適した場所です)。
トラブルシューティング (Firefox): 新しいタブを開き、about:cache に移動します。ここに、オフライン キャッシュ デバイスの見出しが表示されます。ここには、オフライン キャッシュ ファイルが保存されるキャッシュ ディレクトリが表示されます。List Cache Entries をクリックすると、オフライン キャッシュ マニフェストにファイルが表示されます。
ここで奇妙な点が 2 つあります。1) リストのファイルをクリックすると、「キャッシュ エントリ情報 選択したキャッシュ エントリは利用できません」という空白のページが表示されることです。ただし、ファイルは存在し、キャッシュ ディレクトリに空白ではありません 2) キャッシュ マニフェストのすべてのファイルがリストされていますが、呼び出しているページはここにはリストされていません (Chrome DevTools では、マニフェストに次のように表示されます)。マスター: キャッシュ マニフェスト ファイルに明示的にリストされていなくても、自動的にキャッシュされます)。
コールド (空の) キャッシュでは、ページをロードすると、コンソールにはチェック、ダウンロード、進行状況、およびキャッシュされたイベントが表示されますが、キャッシュのステータスはキャッシュされていません。基本的にキャッシュファイルはダウンロードされますが、アクセスできません。Firebug DOM applicationCache は次のように述べています: オフライン キャッシュに 0 アイテム (これは about:cache および Options -> Advanced に示されているものと矛盾します)。ステータスは 1 で、アイドル状態を意味します。オンラインのときに Firebug の [ネット] タブを見ると、200 OK 応答のあるページに対する GET 要求が表示されます。Expires 設定は Wed Dec 31 1969 を示しています。これは、ページが常にフェッチされることを意味すると思います。他のファイルは 304 Not Modified 応答を示します。これは、それらがブラウザーのキャッシュから読み込まれていることを意味します。
オフラインの場合: 「キャッシュされていない」キャッシュを使用すると、GET 要求が失敗し、オフライン フォールバック 404 ページが 200 OK (BFCache) 応答で読み込まれます。
オフライン キャッシュはディスク上に物理的に存在し、進行状況イベントがコンソールに表示されるため、ダウンロードされているようですが、Firefox はキャッシュされたイベントを起動しないため、一部のリソースが正常にダウンロードされませんでした。ファイルはすべて png、js、または php 形式であるため、クレイジーなファイル形式はありません。Chrome はまったく同じファイルを問題なくキャッシュにダウンロードします。モバイル Safari も試してみましたが、オフライン キャッシュからページを正常にリロードしました。
Firefox が特定のファイル タイプをキャッシュしないという既知の問題はありますか? 一部のファイルで .html.php 拡張子を使用しています。また、php ファイルを使用してマニフェストを動的に生成するため、存在するファイルのみを取得し、それらをハッシュして変更を検出し、マニフェストを更新します。
次のステップ: 最小限のマニフェストを試して、それが機能するかどうかを確認し、次にファイルを 1 つずつ追加して、どのファイルがエラーをトリガーするかを確認します。おそらく Firefox は、静的ファイルを手動で更新するのではなく、キャッシュ マニフェストを動的に生成しているという事実を気に入らないのでしょうか?
私はキャッシュ マニフェストの難解な複雑さについて多くのことを学びましたが、コンピューターの専門家というよりはハッカーです。他の誰かが Firefox でこの奇抜さを経験したことがありますか?
ページの先頭:
<!DOCTYPE html>
<html manifest="/directory/manifest.php">
そしてmanifest.phpはちょうど
header('Content-Type: text/cache-manifest');
echo "CACHE MANIFEST\n";
etc. etc. It uses RecursiveDirectoryIterator to get all the files in the directory (except the cache itself, which is included by default).