簡體   English   中英

如何在iPhone應用程序中緩存Javascript和JSON數據?

[英]How can I cache Javascript and JSON data in my iPhone app?

我正在使用Titanium開發本機iPhone應用程序。 在這個應用程序中,我正在使用來自遠程API(我在Rails 3中開發)的數據。 我希望用戶盡可能在手機上緩存API數據。 我需要幫助的是緩存的概念。 最好的方法是什么? API中數據的性質是它需要是最新的。 因為聯系數據可以隨時更改。

我對緩存過程如何工作一無所知。 如果您能解釋管理API緩存過程的最佳方法,我將非常高興!

我正在使用JSON和Javascript。

“ API中數據的性質是它必須是最新的。因為聯系數據可以隨時更改”

如果是這樣,那么它會使任何類型的緩存變得多余,因為您需要將緩存與實時數據進行比較以檢查更改,從而使緩存本身毫無意義。

您可能仍想緩存數據的唯一原因是使數據脫機可用。 既然如此,我將使用iphone本身的SQLite數據庫。

Titanium緩存是帶有單元測試的簡潔代碼,並在自述文件中提供了一些示例代碼。 我在幾分鍾內將其與自己的項目集成在一起,並且效果很好。

我認為緩存的類型取決於應用程序。

您可以在以下位置緩存數據:

  1. 客戶;
  2. 服務器;
  3. 其他網絡元素。

關鍵是數據的刷新。 錯誤的算法會產生不一致的數據。

您可以找到有關分布式系統文獻的有趣信息。

再見

這里有幾個選擇。

1)您可以使用ASIHTTPRequest並忽略緩存頭來緩存所有內容。 使用您的應用程序時,您可以檢測是否正在緩存。 如果命中,則在命中高速緩存后向服務器觸發請求以請求任何新數據。 您可以通過在URL的末尾附加一個隨機URL參數來實現此目的,因為緩存是從URL退出的。 如果您擁有良好的連接和新數據,請加載它。否則,不執行任何操作,並且在良好連接下使用該應用程序時,您的用戶擁有最新數據

2)通過總是命中高速緩存來執行#1的大部分操作,而不是在命中高速緩存后向服務器觸發同一請求的不可訪問版本,而是啟動不可高速緩存的時間戳檢查以查看數據是否已更新。 如果已經存在,請觸發不可緩存的完整API請求。 如果沒有,或者失敗,您將無能為力。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM