2015-11-14 69 views
1

我正在從Web API開發一個代表JSON的應用程序。iOS - 緩存如何工作?

遠程數據源每天更新數次。

所有我想要做的是:

// pseudo code 

makeRequest() { 
if (network not available){ 

    if (cache not exists) { 
     showEmptyScreen() 
    }else if (cache exists){ 
     useCache() 
    } 

}else if (network available){ 

    if (cache not exists) { 
     loadFromRemote() 
    }else if (cache exists){ 
     if (cache is older than latest update) { 
      loadFromrRemote() 
     }else { 
      useCache() 
     } 
    } 
} 
} 

我從AppleNSHipster瞭解NSURLCache

如果NSURLCache可以做我想做的事,這仍然令人困惑。例如,它是如何工作的,以檢查是否有更新版本的數據而沒有真正下載任何內容?

如果NSURLCache無法處理檢查,我怎麼能自己編碼?

感謝您的任何建議!

回答

1

緩存的行爲主要取決於您和您的服務器。 NSURLCache不是自己做出決定,除非超過容量限制時可能做什麼。

當您提出請求時,標頭如If-Modified-Since將通過比較緩存數據的時間戳來確定是否傳輸數據。

基於服務器的頭文件(如Cache-Control)也會影響數據在緩存中保持有效的時間。

綜上所述,NSURLCache可以處理你所需要的,但實現將基於對NSURLCache的配置,你如何提出請求的組合,高速緩存控制如何在應對實現,你是否覆蓋由首部給出的政策。