2

このチュートリアルに従って、iPad で試しています。チュートリアルには次のように書かれています。

アプリケーション キャッシュが自動的に更新されるのを待つか、JavaScript を使用して更新をトリガーすることができます。アプリケーション キャッシュは、マニフェスト ファイルが変更された場合にのみ自動的に更新されます。マニフェスト ファイルにリストされているリソースが変更された場合、自動的に更新されません。マニフェスト ファイルは、バイトごとに同じである場合、変更されていないと見なされます。したがって、マニフェスト ファイルの更新日を変更しても、更新はトリガーされません。これがアプリケーションにとって十分でない場合は、JavaScript を使用して明示的にアプリケーション キャッシュを更新できます。

そのため、更新を強制するために私が行ってきたことは、バージョン番号が含まれているマニフェスト ファイルのコメントを変更することです。EG、次の行を変更します。

# Cache Manifest Version: 1.6

私のhtmlヘッダーは次のようになります。

<!DOCTYPE html>
<html lang="en" manifest="cache.manifest">
<head>
    <meta charset="UTF-8"/>
    <title>Canvas tutorial</title>

    <link rel="stylesheet" type="text/css" href="app.css">
    <meta name="viewport" content="width=640; user-scalable=no;"/>
    <meta name="apple-mobile-web-app-capable" content="yes"/>

iPad Safari で表示される自分のサイトのバージョンがあり、それを自分のホームページに追加しました。アプリの html にテキストを追加するなど、変更を加えると、次のようになります。

  1. 変更を確認するには、Safari で 2 回更新する必要があります。
  2. 変更を確認するには、「ホームページに追加されたバージョン」で 2 回更新する必要があります。
  3. デスクトップで Firefox を試しても、変更を確認するには 2 回更新する必要があります。

なぜこれが起こるのですか?最初の更新で機能しないのはなぜですか?

iOS 7「ホームページに追加」アップデート

このドキュメントは、iOS 7 の「ホームページ アプリに追加」には適用されないことを発見しました。キャッシュは定期的に更新することを決定し、私が知る限り、これを制御することはできません (JavaScript を使用している可能性がありますが、私はそれは試していません)。

幸いなことに、回避策を見つけました。ここを参照してください: https://stackoverflow.com/a/19674061/61624

4

1 に答える 1

1

(Chrome で) トレースを観察すると、ブラウザーがアプリケーション キャッシュの更新の終了を待たずに、既存のアプリケーション キャッシュから要求されたページが表示されることがわかります。

次に、ブラウザに以前のバージョンが表示されます。

ページでアプリケーションキャッシュの更新完了イベントを検出し、プログラムでリロードを実行します(HTML5機能)。

私はhttp://www.html5rocks.com/en/tutorials/appcache/beginner/で見つけ ます

次のコードが役立つ場合があります。(コードは更新の許可を求めますが、ユースケースでは、コードが更新されてすぐに再読み込みを行う場合があります。)

// Check if a new cache is available on page load.
window.addEventListener('load', function(e) {

  window.applicationCache.addEventListener('updateready', function(e) {
    if (window.applicationCache.status == window.applicationCache.UPDATEREADY) {
      // Browser downloaded a new app cache.
      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);

その助けを願って

于 2013-12-12T09:33:57.400 に答える