iOS快取機制詳解

2021-10-10 05:11:07 字數 2009 閱讀 8735

應用脫機工的兩種方式:第一種是**按需快取**,這種情況下應用快取起請求應答,就和web瀏覽器的工作原理一樣;第二種是**預快取**,這種情況是快取全部內容(或者最近n條記錄)以便離線訪問。

ios快取機制詳解 借鑑**

在眾多可以本地儲存資料的技術中,有三種脫穎而出:url快取、資料模型快取(利用nskeyedarchiver)和core data。

資料模型快取與url快取

按需快取可以用資料模型快取或url快取來實現。兩種方式各有優缺點,要使用哪一種取決於伺服器的實現。url快取的實現原理和瀏覽器快取或**伺服器快取類似。當伺服器設計得體,遵循http 1.1的快取規範時,這種快取效果最好。如果伺服器是soap伺服器(或者實現類似於rpc伺服器或restful伺服器),就需要用資料模型快取。如果伺服器遵循http 1.1快取規範,就用url快取。資料模型快取允許客戶端(ios應用)掌控快取失效的情形,當開發者實現url快取時,伺服器通過http 1.1的快取控制頭控制快取失效。儘管有些程式設計師覺得這種方式違反直覺,而且實現起來也很複雜(尤其是在伺服器端),但這可能是實現快取的好辦法。事實上,mknetworkkit提供了對http 1.1快取標準的原生支援。

資料模型快取:

實現了按需快取的檢視控制器的控制流

menuitem類的encodewithcoder方法(menuitem.m)

- (void)encodewithcoder:(nscoder *)encoder

[encoder encodeobject:self.itemid forkey:@"itemid"];

[encoder encodeobject:self.image forkey:@"image"];

[encoder encodeobject:self.name forkey:@"name"];

[encoder encodeobject:self.spicylevel forkey:@"spicylevel"];

[encoder encodeobject:self.rating forkey:@"rating"];

[encoder encodeobject:self.itemdescription forkey:@"itemdescription"];

[encoder encodeobject:self.waitingtime forkey:@"waitingtime"];

[encoder encodeobject:self.reviewcount forkey:@"reviewcount"];

複製**

menuitem類的initwithcoder方法(menuitem.m)

複製**

- (id)initwithcoder:(nscoder *)decoder

if ((self = [super init])) onerror:^(nserror *engineerror) {

[uialertview showwitherror:engineerror];

複製**

快取版本控制:

ios中驗證模型:

第二個是驗證模型,伺服器通常會傳送乙個校驗和(etag)。後續所有從快取獲得資源的請求都應該用這個校驗和向伺服器**重新驗證**資源是否有變化。如果校驗和匹配,伺服器就返回乙個http 304 not modified的狀態碼。

ios記憶體快取:

以下簡單列出了要建立記憶體快取需要的步驟。這些步驟將會在下面幾節中詳細解釋。

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

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

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

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

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

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

iOS的快取機制

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

Android WebView快取機制詳解

android webview快取機制 當我們載入html時候,會在我們data 應用package下生成database與cache兩個資料夾 我們請求的url記錄是儲存在webviewcache.db裡,而url的內容是儲存在webviewcache資料夾下.data data package ...