web-dev-qa-db-ja.com

ホーム画面のIOS Webアプリのキャッシュをクリアするにはどうすればよいですか?

JQTouchを使用して、ホーム画面にメタタグ「Apple-mobile-web-app-capable」を使用してWebアプリを作成していますが、[設定]から何度もキャッシュをクリアしても、WebアプリのJavaScriptは古いキャッシュになっていますバージョン。

奇妙なことに、メタタグのコンテンツを次のように設定すると、

<meta name="Apple-mobile-web-app-capable" content="no" />

...その後、ホーム画面にWebアプリを追加すると、起動時に最新バージョンが表示されます。

ただし、メタタグを次のように設定した場合、

<meta name="Apple-mobile-web-app-capable" content="yes" />

... Webアプリをホーム画面に追加すると、古いバージョンのキャッシュが表示されます。

PS。 javascriptのみであることを確認できますが、更新されません。

26
GilbertSinnott

Js includeのsrc属性の末尾に一意の文字列を追加してみてください(たとえば、タイムスタンプを使用)。行う更新ごとにこの一意の文字列を変更する必要があることを覚えておいてください。遅延読み込みの実行を検討することをお勧めします(これで問題が解決する可能性があります):<script type="text/javascript" src="myScript.js?012345"></script>

これは通常、ブラウザにスクリプトの最新バージョンを取得するように強制します。うまくいくかも...

20
SquareFeet

ASP.NET MVCで bundling 機能を使用すると、この問題が解決されることがわかりました。

次の形式のバンドルリンクが自動的に生成されます。

http://www.domain.com/MvcBM_time/bundles/AllMyScripts?v=r0sLDicvP58AIXN_mc3QdyVvVj5euZNzdsa2N1PKvb81

バンドル内のファイルが変更されると、v =の後のトークンが変更され、バンドルに対するブラウザー要求が最新のバンドルを取得することが保証されます。

1
muzzamo

これは私がキャッシュをクリアするために機能した方法です完全に

1-アプリがあるSafariのタブを削除します。
2-ホーム画面でアプリのアイコンを削除します。
3 - Kill 記憶からのサファリ。
4-settings/safariに移動し、キャッシュのクリアを押します。
5-動作を確認したい場合は、iPhone/iPodを再起動できます

1
Mageek

これは私を完全に狂わせました。 Safariを強制終了し、キャッシュをクリアし、プライベートモードに切り替え、ホーム画面からWebアプリを削除してみました。それらのどれも機能しませんが、機能するのは一時的にWebアプリページをSafari自体にロードして再ロードすることです

ホーム画面に追加 を使用している場合は、?web_app_ready = 1をインストールURLに追加できます。これはエンドユーザーの手順ではないため、すべてのスクリプト(上記の回答)にクエリ文字列を追加すると、開発者以外の環境でより効果的になります。

0
Chris

ジェイルブレイクされている場合は、ターミナルでこれを実行してください

rm ./Library/Caches/com.Apple.webapp/Cache.db
0
Dmitry Grinberg

SquareFeetの発言を基にして、PHPを使用して、ファイル名に一意のGETタグを追加することで、毎回新しいファイルを自動的にプルダウンできます。例えば:

<link rel="stylesheet" type="text/css" href="/css/global.css?
   <?php echo(mt_Rand(10000000, 99999999)); ?>
" />

理論的には、Webサーバーにいくつかの変更を加えても、JavaScriptを使用して同じタスクを実行できます。

<link rel="stylesheet" type="text/css" href="/css/global.css?
   <div id="id"></div>
" />

<script language="Javascript" type="text/javascript">
   document.getElementById("id").innerHTML = Math.floor((Math.random() * 10000) + 1);
</script>
0
SnazzyJava