2011-04-02 80 views
4

我正在開發一個本地iPhone應用程序鈦。 在這個應用程序中,我使用的是遠程API(我在Rails 3中開發的)中的數據。 我希望用戶儘可能在手機上緩存API數據。 我需要幫助的是緩存的概念。做這件事的最好方法是什麼? API中數據的性質是它需要是最新的。因爲它是可隨時更改的聯繫人數據。如何在我的iPhone應用程序中緩存Javascript和JSON數據?

我不知道緩存過程如何工作。如果你有人可以解釋 管理API的緩存過程的最佳方式,我將非常高興!

我正在使用JSON和Javascript。

回答

0

我認爲它的應用程序相關的緩存的類型。

您可以在緩存數據:

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

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

你可以找到關於分佈式系統

再見

+0

由於它是一個iPhone應用程序,我將使用客戶端緩存,可能是本地數據庫或文件系統上的文件。 – 2011-04-02 17:05:05

+0

您可以使用網頁瀏覽器緩存等方法。 – 2011-04-02 17:21:39

+0

聽起來很有趣。這是如何完成的? – 2011-04-02 17:31:49

1

的文學有趣的信息「的數據的API中的本質是,它必須是最新的。因爲它是接觸數據可以隨時更改「

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

您可能仍想要緩存數據的唯一原因是讓它可以脫機使用。這種情況下,我會使用一個SQLite數據庫,這是原生的iPhone。

+1

您可能有某種API告訴您用戶數據上次更改的時間。這樣,您不必獲取所有數據,只需通過API即可。 – ceejayoz 2011-04-02 17:28:10

1

titanium-cache是帶單元測試的乾淨代碼,並在自述文件中提供了一些示例代碼。我在幾分鐘內就將它與我自己的項目集成在一起,並且它工作得很好。

+0

你能否給你的答案添加一些單詞,而不是隻有鏈接? – 2011-08-15 11:47:52

+0

當然,現在好點了嗎? :-) – neoneye 2011-08-16 13:22:19

+0

不完美,但更好。謝謝。 – 2011-08-16 13:36:11

0

這裏有幾個選項。

1)您可以使用ASIHTTPRequest並忽略緩存標頭來緩存所有內容。當您的應用程序正在使用時,您可以檢測到緩存是否被擊中。如果命中,則在緩存命中後向服務器發出請求以請求任何新數據。您可以通過在URL的末尾附加一個隨機URL參數來實現此目的,因爲緩存鍵不在URL中。如果你有良好的連接和新的數據,加載它。否則什麼都不做,並且你的用戶在良好的連接下使用應用程序時有最新的數據

2)通過總是點擊緩存來做大部分#1在點擊高速緩存後向服務器發送相同請求的非高速緩存版本,引發非高速緩存時間戳檢查以查看數據是否已更新。如果已經發出,請發出不可緩存的完整API請求。如果它沒有或失敗,你什麼都不能做。

相關問題