iOS的快取機制

2021-06-27 12:26:01 字數 1568 閱讀 6288

應用需要離線工作的主要原因就是改善應用所表現出的效能。將應用內容快取起來就可以支援離線。我們可以用兩種不同的快取來使應用離線工作。第一種是**按需快取**,這種情況下應用快取起請求應答,就和web瀏覽器的工作原理一樣;第二種是**預快取**,這種情況是快取全部內容(或者最近n條記錄)以便離線訪問。

快取流程:

1.需要獲取資料時,檢查本地是否有需要獲取的資料。

1a. 若存在,則檢查本地快取是否過期。

1aa. 若未過期,則載入本地快取資料,無需再向伺服器請求資料。

2. 本地沒有快取資料,則向伺服器請求資料。

快取分為兩種,記憶體快取(資料儲存在物件中),硬碟快取。

記憶體快取,特點,讀取快,缺點,手機記憶體有限,需要及時清空快取。

硬碟快取,特點,空間相對大,但是讀取慢,有io開銷。

ios sdk中為快取準備了若干種機制,以下幾種都偏向於硬碟快取。

1. 實現資料模型的歸檔(這個用的比較多)

可以用nskeyedarchiver類來實現資料模型快取。

需要實現協議nscoding .

- (void)encodewithcoder:(nscoder *)acoder;

- (id)initwithcoder:(nscoder *)adecoder;

序列化: 資料模型實現 initwithcoder: 方法,儲存到archiver檔案中。

反序列化: 從archiver檔案讀取資料模型,並通過實現encodewithcoder: 解碼資料。

2. core data

要在core data中儲存資料,首先建立乙個core data模型檔案,並建立實體(entity)和 關係(relationship)。

應用可以借助core data 獲取真正的離線訪問功能,就像蘋果內建的mail和calendar應用一樣。實現預快取時,必須定期刪除不再需要的過時的資料,否則,快取會不斷增長並影響應用的效能。同步本地變更是通過追蹤變更集併發送回伺服器實現的。

3. sqlite

將需要快取的資料,儲存到本地資料庫中。

在請求時,訪問資料庫,若資料庫有資料,則載入。若沒有,則向伺服器提出請求,需要獲取資料。

讀取資料庫會產生一定的io開銷。

4. 鑰匙串keychain

keychain是記錄ios 應用中的敏感資料的,比如賬號密碼等。在解除安裝應用後並不會隨應用一起刪除。用keychain的這個特性來獲取唯一性的裝置id,具體做法是,生成乙個uuid,或者是獲取廣告識別符號,然後存入keychain,這樣刪除應用後再次安裝應用也還能讀取到上一次生成的裝置識別符號。

5. userdefault

記憶體快取的步驟:

1. 新增變數來存放記憶體快取資料。

2. 限制記憶體快取大小,並且把最近最少使用的項寫入檔案,然後從記憶體快取中刪除。ram是有限的,達到使用極限就會觸發記憶體警告。收到警告時不釋放記憶體會使應用崩潰。因此,需要為記憶體快取設定乙個最大閾值。當快取滿了以後再新增任何東西時,最近最少使用的物件應該被儲存到檔案。

3. 處理記憶體警告,並把記憶體快取以檔案形式寫入快閃儲存器。

4. 當應用關閉,退出,或進入後台時,將記憶體快取全部以檔案形式寫入快閃儲存器。

IOS 開發快取機制 記憶體快取機制

使用快取的目的是為了使用的應用程式能更快速的響應使用者輸入,是程式高效的執行。有時候我們需要將遠端 web伺服器獲取的資料快取起來,減少對同乙個 url多次請求。記憶體快取我們可以使用 sdk中的 nsurlcache類。nsurlrequest需要乙個快取引數來說明它請求的 url何如快取資料的,...

iOS快取機制詳解

應用脫機工的兩種方式 第一種是 按需快取 這種情況下應用快取起請求應答,就和web瀏覽器的工作原理一樣 第二種是 預快取 這種情況是快取全部內容 或者最近n條記錄 以便離線訪問。ios快取機制詳解 借鑑 在眾多可以本地儲存資料的技術中,有三種脫穎而出 url快取 資料模型快取 利用nskeyedar...

hibernate的快取機制

快取是介於 應用程式和物理資料來源之間,其作用是為了降低應用程式對物理資料來源訪問的頻次,從而提高了應用的執行效能。快取內的資料是對物理資料來源中的資料的複製,應用程式在執行時從快取讀寫資料,在特定的時刻或事件會同步快取和物理資料來源的資料。快取的介質一般是記憶體,所以讀寫速度很快。但如果快取中存放...