すべての主要なブラウザー (Chrome/Safari、Opera、Firefox、IE10) で動作する AppCache を使用する HTML5 アプリに使用されるファイルを配信するためのキャッシュ制御ヘッダーを理解するのに苦労しています。
私が遭遇した問題は、ある種類のヘッダーが特定のブラウザーで機能すると、別の種類のヘッダーが完全に機能しなくなる可能性があることです。例えば:
Cache-Control: private
Webkit ブラウザーで問題なく動作し、更新されたファイルを更新して読み込み、キャッシュ内で置き換えます。ただし、Firefox と IE10 はどちらも、更新されたマニフェスト ファイルを認識していても、新しいファイルの読み込みを拒否し、代わりにキャッシュ (appcache ではありません!) から取得します。
Cache-Control: no-cache
Webkit ブラウザーでも正常に動作し、Firefox と IE10 が新しいファイルをキャッシュからロードする代わりにロードするようにしますが、オフライン機能を壊します。それらは appcache マニフェストで明示的に言及されています。
最後に、試してみました
Cache-Control: must-revalidate
これは と同様にno-cache
機能しますが、Firefox と IE10 がオフラインで使用するためにファイルを保持しない代わりに、それらを保持しないのは Webkit です。
private
Cache-Control ヘッダーを送信しないと、 orと同じ結果が得られますpublic
。これは、ブラウザが単純にそれを標準的な方法と見なしているためです。
それで、私は何が欠けていますか?public
更新 (ホットフィックスを含む) は定期的private
に配信されるのではなく、利用可能または必要なときにいつでも配信されるため、max-age を設定することはオプションではありません。
どの Cache-Control ヘッダーが正しいもので、すべてのブラウザーで動作するかを誰かが明らかにできますか?