3

小さな HTML5 アプリをサーバーに再デプロイする必要があります。.appcache ファイルに触れるだけで、次回のアクセス時にすべてのブラウザーが最新バージョンのファイルに更新されることがわかりました。

マニフェストは次のようになります。

CACHE MANIFEST
#Version: 201209251353

index.html
apple-touch-icon.png
css/styles.css
data/dump.bin
img/background.png
img/sprites.png
js/core.js
js/jquery-1.8.1.min.js
vid/walkthrough.mov

「触れる」には、内容が変更されるたびに更新されるように、コメント (#Version:) を追加しました。

奇妙なことに、いくつかのファイルが更新されます。すべてではありません。たとえば、同僚が最新の core.js を取得しても、古い walkthrough.mov が表示されます。

キャッシュからすべてのファイルを強制的に更新する簡単なメカニズムはありますか?

SOで次のコードを見つけてスクリプトに含め、役立つことを期待しました。それがどれほど必要かわかりません:(

    // Application cache refresh
    window.addEventListener('load', function(e) {

      window.applicationCache.addEventListener('updateready', function(e) {
        if (window.applicationCache.status == window.applicationCache.UPDATEREADY) {
          // Browser downloaded a new app cache.
          // Swap it in and reload the page to get the new hotness.
          window.applicationCache.swapCache();
          if (confirm('A new version of this site is available. Load it?')) {
            window.location.reload();
          }
        } else {
          // Manifest didn't changed. Nothing new to server.
        }
      }, false);

    }, false);
4

2 に答える 2

6

マニフェストとコンテンツにどの有効期限ヘッダーを設定していますか?

(たとえば)有効期限を1か月先に設定し、そのファイルがブラウザvid/walkthrough.movのキャッシュに入れるのに十分小さい場合(注:アプリケーションキャッシュではない)、ブラウザはアプリケーションキャッシュをバージョンから更新しますネットワークを介して再度要求するのではなく、ブラウザのキャッシュで(ファイルをフェッチしてから1か月未満の場合)。

マニフェストファイルに将来の有効期限を設定した場合、一部のブラウザのバージョンによっては、更新されたマニフェストが検出されない場合があります。

于 2012-09-25T13:20:13.477 に答える