2012-10-08 127 views
2

在iPad的PhoneGap應用程序中,我有一個顯示存儲在在線數據庫中的數據的iFrame。在下一步中,我通過JSON下載這些數據並在應用程序中進行編輯。完成後,我返回到iFrame,但仍顯示舊數據。有了JSON,我得到了新的正確數據。iOS PhoneGap。防止iFrame高速緩存

......總之,應用程序緩存的iFrame

我想盡一切辦法防止緩存包括頁

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

通常的元標籤的東西的內容和調用與頁面一個時間戳作爲get參數。我甚至試圖通過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); 
} 

只有當我重新啓動應用程序,我得到了新的一頁

有什麼辦法來解決這個問題呢?

+0

你怎麼'返回iFrame'?也許你應該添加一個時間戳到包含iFrame的頁面?或者這是一個單頁面的應用程序? – Tony

+0

它是一個單頁面應用程序,但我的視圖通過AJAX在容器中加載。不幸的是,你的提示也沒有工作 – flecki89

回答

2

我解決了這個問題,但它只是部分iOS的錯!

我忘了提及的是,iFrame中的頁面也顯示來自AJAX請求的數據。在iOS 6中,即使您說「cache:false」(我們使用jQuery),AJAX請求也會被緩存。

所以要獲取最新的數據,你必須添加一個隨機但每次唯一的值作爲參數(我使用時間戳)。我建議我的同事(他做了數據顯示頁面)添加這個參數,現在它可以工作。

當我直接在應用程序加載數據,我已經沒有這一招,他不:)