2

iPad 用の PhoneGap アプリには、オンライン データベースに保存されているデータを表示する iFrame があります。次のステップで、JSON 経由でこのデータをダウンロードし、アプリで編集します。完了したら iFrame に戻りますが、古いデータがまだ表示されています。JSON を使用すると、新しい正しいデータを取得できます。

...要するに、アプリは iFrame のコンテンツをキャッシュします

ページ内の通常のメタタグのものを含め、キャッシュを防ぐためにあらゆることを試しました

<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />

タイムスタンプを get-parameter としてページを呼び出します。JavaScript を使用して iFrame 全体を再レンダリングしようとしましたが、それでも機能しません。

function loadFrame() {
var cid = localStorage.getItem("cid");  
var ts = new Date().getTime();
var url = pageURL+"?c=" +cid + "&timestamp=" + ts;

localStorage.removeItem("cid");

ifid = "iframe_" + ts;  

$("#iframe_wrap").html('<iframe name="iframe" id="'+ifid+'" src="'+url+'" class="fullscreen"></iframe>');
$("#"+ifid).hide();
$("#"+ifid).one("load",onLoad);

console.log("URL in iFrame '#"+ifid+"': "+url);
}

アプリを再起動すると、新しいページが表示されます

この問題を解決する方法はありますか?

4

1 に答える 1

2

問題は解決しましたが、部分的に iOS のせいです!

言い忘れていたのは、iFrame のページには AJAX リクエストからのデータも表示されるということです。iOS 6 では、「cache: false」と言った場合でも、AJAX リクエストはキャッシュされます (jQuery を使用します)。

したがって、最新のデータを取得するには、ランダムではあるが毎回一意の値をパラメーターとして追加する必要があります (私はタイムスタンプを使用します)。このパラメーターを追加するように同僚 (彼はデータ表示ページを作成しました) にアドバイスしましたが、今では機能しています。

アプリにデータを直接ロードするとき、私はすでにこのトリックを実行しましたが、彼はそうではありません:)

于 2012-10-08T11:08:59.467 に答える