18

iPad でスタンドアロン モード (ホーム画面に追加) で実行する JavaScript アプリケーションがあります。

iOS 6 から iOS 7 にアップグレードしましたが、アプリは常に同じコンテンツをロードし、キャッシュを保持しています。一意のタイムスタンプをパラメーターとして使用して、アプリの読み込みごとに JS および CSS ファイルを動的に読み込みます。JS および CSS ファイルがキャッシュされておらず、iOS 6 で動作することを確認するために必要でした。

私は次のことを試しました:

  1. ホーム画面からアプリを削除する

  2. Cookie とウェブサイト データの削除

  3. iPadの再起動

  4. 私はそれをmanifest="manifest.appcache"削除しました(その後、1から3を再試行しました)

  5. 以下のメタタグを追加しました

    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="pragma" content="no-cache">

  6. これをローカルで開発し、そのページがデスクトップ PC から提供されるため、PC の IP を変更してから 1 から 3 を試しましたが、問題は解決しませんでした。

そのため、変更が HTML ファイルまたは JS にあるかどうかに関係なく、すべての変更が表示されません。

iOS がスタンドアロン アプリを処理する方法には明らかにいくつかの変更があります。私は何が欠けていますか?

4

7 に答える 7

2
  1. マニフェスト ファイルに変更を加える (バージョン番号を追加するなど) と、アプリがコンテンツをリロードするようです:モバイル Web アプリがキャッシュを適切にクリアしない

  2. キャッシュの問題を解決するには、CSS および JS の URL にバージョン番号を追加する必要があります。例 file.css?v=2

乾杯、Z.

于 2013-09-26T21:28:49.247 に答える
1

手動でキャッシュをクリアしてみてください。設定からこれを行うことができます。

于 2014-01-03T20:50:30.483 に答える
1

このphpスクリプトを見つけて、正しいmanifest.cacheファイルをブラウザに出力しました

少し前に作ったので参考になるかもしれません。

一部のファイルが変更されているかどうかを自動的にチェックし、ブラウザーに新しい manifest.cache を強制的に再読み込みさせます。

マニフェスト.php

<?php
header("Cache-Control: max-age=0, no-cache, no-store, must-revalidate");
header("Pragma: no-cache");
header("Expires: Wed, 11 Jan 1984 05:00:00 GMT");
header('Content-Type: text/cache-manifest');
echo "CACHE MANIFEST\n";
$hashes="";
$dir = new RecursiveDirectoryIterator(".");
foreach(new RecursiveIteratorIterator($dir) as $file){
 if ($file->IsFile()&&$file!="./manifest.php"&&substr($file->getFilename(),0,1)!="."){
  echo $file."\n";$hashes.=md5_file($file);
 }
}
echo "NETWORK:\n";
echo "*\n";
echo "FALLBACK:\n";
echo "online.html fallback.html\n";

echo "# Hash: " . md5($hashes) . "\n";
?>

atm iOS 7 でテストできません

于 2013-12-16T22:27:26.917 に答える
1

HTML のマニフェスト参照を削除するだけです。つまり、マニフェスト ファイルを使用しないでください。

また、マニフェスト ファイルは正しい MIME タイプで提供されていますか?

于 2013-12-16T08:17:50.273 に答える