2012-09-03 70 views
0

使用$.ajax({..})我從服務器接收XML文件的內容。所以我不必在每次加載頁面時都請求這個文件,如果可能的話,我希望在本地緩存這些內容,並將其保存在磁盤上的一個文件中。但是要將其緩存到即使在第二天重新啓動後也可以使用。 XML文件內容每天更新,因此不需要經常重新發送文件。Javascript/JQuery。本地緩存xml文件

可能嗎?如果是這樣,我怎麼能做到這一點?你能提供一個鏈接或一些示例代碼嗎?我找到了一些我能理解的好東西,但是我沒有成功。

+2

您可以在您的ajax請求中使用「cache:true」選項。 –

+0

,它會緩存多久?它會在瀏覽器重新啓動時被刪除,或者...我不知道? – AndreiBogdan

+1

是的,它會在瀏覽器重新啓動時新增。 –

回答

2

你需要這個

http://brian.io/lawnchair/

+0

我看了一下這個文檔,無法看到並理解緩存在瀏覽器重新啓動或PC重新啓動時是否持續。你有沒有知道它是否有用? – AndreiBogdan

+0

是的,即使有人關閉應用程序或瀏覽器 – Ashirvad

+0

這是...... ....真棒!謝謝:) – AndreiBogdan

1

默認情況下,將根據服務器如何設置文件頭你通常緩存響應的瀏覽器。如果你需要堅持不懈,那麼你可以使用local storage以及可能用於傳統支持的cookies(雖然存儲的實際大小限制)。

使用本地存儲非常簡單。您也可以帶一個到期時間戳,讓客戶知道什麼時候更新緩存。

準系統例如:

var mydata = { foo: 'bar' }; 
var cache = { 
    data: mydata, 
    expires: new Date().getTime() 
} 

sessionStorage.setItem("cache", JSON.stringify(cache)); 

而且來獲取數據:

var cache = JSON.parse(sessionStorage.getItem("cache")); 
if (cache.expires + day < new Date().getTime()) { 
    // get a fresh copy 
} else { 
    var mydata = cache.data; 
} 

有許多本地緩存的抽象,如果你更喜歡使用API​​的一個更高的水平,你可以使用來代替。

+0

我發現「DOM Storage在以下瀏覽器中受支持:FF3.5 +,Chrome4 +,Safari4 +,Opera10.5 +和IE8 +」。嗯,我猜這不適用於移動設備的Android瀏覽器... – AndreiBogdan

+1

我相信Android的默認瀏覽器是基於WebKit的,應該支持本地存儲。 iOS是Safari,它絕對應該支持它。 – David