8

コメント付きのキャッシュマニフェストがあります

# Version 3.2

すべてのアプリを更新するには、バージョン番号を変更するだけです。それは動作しますが:

マニフェストを更新すると、すべてが正しく更新されます(新しいキャッシュがいっぱいになります)が、実際のファイルは(古い)キャッシュからもう一度取得されます。2回リロードすると、すべてが更新されます。この動作は正しいですか?クロム21を使用します。

ありがとう

4

2 に答える 2

17

はい、これは現在の「正しい」動作です。これが起こることです:

マニフェストファイルに変更を加えたばかりで、ブラウザを更新すると、次のようになります(オンラインであると仮定)。

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

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

個人的には、新しいファイルのダウンロードが完了した後、ブラウザがユーザーにもう一度更新するように警告する必要があると思いますが、現在、ほとんどの人は「window.applicationCache」からイベントハンドラーを挿入して、これを管理するためのイベントを発生させます。

window.applicationCacheの使用例を確認するには、次のURLにアクセスしてください:http ://www.html5rocks.com/en/tutorials/appcache/beginner/

「キャッシュの更新」セクションの下にあります。

于 2012-11-08T05:01:49.527 に答える
1

ここで説明するように、キャッシュを即座に交換することが可能です。

function updateSite(event) {
    window.applicationCache.swapCache();
}
window.applicationCache.addEventListener('updateready', updateSite, false);
于 2016-04-01T14:31:21.210 に答える