HTML5 AppCache のポイントがわかりません。すでに通常のキャッシュがあります。初めて Web サイトにアクセスすると、すべてのアセットが既にキャッシュされています。AppCache はどのような付加価値を提供しますか? HTML によって現在参照されていなくても、ダウンロードするアセットをブラウザが認識できるようにするための単なるファイルのリストですか? ブラウザはキャッシュが「オール オア ナッシング」であることを確認しますか、つまり、マニフェストによって参照されるすべてがキャッシュされることを確認しますか、それともまったくキャッシュされないことを確認しますか?
3 に答える
あなたが見逃している点はAppCache
、Web アプリ (および Web サイト) をオフラインで使用できるように特別に設計されていることだと思いますが、ユーザーがオンラインのときに通常のブラウザー キャッシュが提供するのと同じ速度の利点も提供されます。AppCache
.
ブラウザー キャッシュとの主な違いは、ブラウザーがキャッシュする必要があるすべてのアセット (おそらくサイト全体) をマニフェスト ファイルに指定できるのに対し、ブラウザー キャッシュは実際にアクセスしたページ (および関連するアセット) のみを保存することです。
私は の専門家でAppCache
はありませんが、問題がないわけではないことはわかっています。モバイルサイトの一部をオフラインで利用できるようにしていた人からの非常に良い記事があります。AppCache
それには、それを使用する決定の根拠と、使用する際に遭遇した多くの落とし穴が含まれています。
このテーマに関するこのHTML5 Rocksの記事にも、いくつかの良い情報があります。
AppCache は実際には、その操作をサポートするためにブラウザ キャッシュを使用します。これは、アプリをダウンロードしてローカルで実行するのに相当するブラウザです。
ユーザーが初めてページにアクセスすると、そのページのリソースがサーバーから読み込まれ、通常のキャッシュに保存されます。ページで appcache マニフェストが指定されている場合、ブラウザーはマニフェストをダウンロードし、そこにあるすべてのリソースを取得します (マニフェストを埋め込んだページにリソースが表示されていなくても)。これらは appcache に保存されます。
ユーザーが 2 回目にそのページにアクセスすると、ブラウザーはそのアプリキャッシュをチェックします。その URL のエントリが存在する場合、マニフェストで指定されたルールに基づいて、サーバーではなく appcache からページを読み込みます (マニフェストは、一部のリソースをネットワークから取得したものとして明示的にマークできます)。
ブラウザーは、appcache からページをロードした後、サーバーに接続して、更新されたマニフェストがあるかどうかを確認します。マニフェストが更新されると、マニフェストからリソースがフェッチされます。これらのフェッチは通常のブラウザー キャッシュ ルールを使用して行われるため、これらのリソースの一部は実際にはサーバーからではなく通常のブラウザー キャッシュからフェッチされる場合があります (これにより、appcache を使用してオフライン アプリを開発するときに差分更新を行うことができます)。新しいバージョンの appcache は、古いバージョンとは別に保持されます。新しいバージョンが取得された後、ユーザーはメイン ページを更新するまで古いバージョンのリソースと対話し続けます。その後、新しいバージョンが読み込まれ、古いバージョンは破棄されます。
もう 1 つの重要な点は、appcache には、リソースが破棄されるタイミングに関するさまざまなルールがあることです。Appcache は基本的に最新のリソース セットを破棄せず、それらをまとめてキャッシュします。悪用を防ぐために、サイトのキャッシュの大きさにストレージ制限 (場合によってはわずか 5 MB) を適用します。対照的に、ブラウザー キャッシュにはサイトごとの制限はありませんが、グローバル キャッシュの制限に達すると、サイトから個々のリソースが破棄されます。