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

2021-06-25 14:54:54 字數 3453 閱讀 9907

使用快取的目的是為了使用的應用程式能更快速的響應使用者輸入,是程式高效的執行。有時候我們需要將遠端

web伺服器獲取的資料快取起來,減少對同乙個

url多次請求。

記憶體快取我們可以使用

sdk中的

nsurlcache類。

nsurlrequest需要乙個快取引數來說明它請求的

url何如快取資料的,我們先看下它的

cachepolicy

型別。 1

、nsurlrequestuseprotocolcachepolicy nsurlrequest

預設的cache policy

,使用protocol

協議定義。 2

、nsurlrequestreloadignoringcachedata 3

、nsurlrequestreturncachedataelseload

只有在cache

中不存在

data 4

、nsurlrequestreturncachedatadontload

只使用cache

資料,如果不存在

cache

,請求失敗;用於沒有建立網路連線離線模式; 5

、nsurlrequestreloadignoringlocalandremotecachedata

nsurlrequestreloadignoringcachedata

類似。 6、

nsurlrequestreloadrevalidatingcachedata:

nsurlcache

還提供了很多方法,來方便我們實現應用程式的快取機制。

//

//  rootviewcontroller.h

//  cachedemo

//  (記憶體快取demo-宣告)

//  created by imilo teana on 12-2-1.// 

#import @inte***ce rootviewcontroller : uiviewcontroller

- (ibaction)cachepress:(uibutton *)button;

@end //

//  rootviewcontroller.m

//  cachedemo

//  (記憶體快取demo-定義)

//  created by imilo teana on 12-2-1.// 

#import "rootviewcontroller.h"

@inte***ce rootviewcontroller()

@property(nonatomic, retain) nsurlconnection *connection;

@end

@implementation rootviewcontroller

@synthesize connection = _connection;

#pragma mark -

#pragma mark - super code

- (void)dealloc

- (void)viewdidload

- (void)viewdidunload

- (bool)shouldautorotatetointe***ceorientation:(uiinte***ceorientation)inte***ceorientation

#pragma mark -

#pragma mark - user code

- (ibaction)cachepress:(uibutton *)button

//設定快取

nsurlcache *urlcache = [nsurlcache sharedurlcache];

//設定快取大小未1m

[urlcache setmemorycapacity:1*1024*1024];

//建立url

nsurl *url = [nsurl urlwithstring:urlstr];

//建立請求

nsmutableurlrequest *request =

[nsmutableurlrequest requestwithurl:url

cachepolicy:nsurlrequestuseprotocolcachepolicy //快取策略(預設)

timeoutinterval:60.0f];//

//從請求中獲取快取輸出

nscachedurlresponse *response = [urlcache cachedresponseforrequest:request];

//判斷是否有快取

if (response != nil)

//將鏈結置為空

_connection = nil;

//重新建立鏈結

nsurlconnection *connection =

[[nsurlconnection alloc] initwithrequest:request

delegate:self

startimmediately:yes];

[self setconnection:connection];

[connection release];

connection = nil;} 

#pragma mark -

#pragma mark - delegate code

- (void)connection:(nsurlconnection *)connection

idreceiveresponse:(nsurlresponse *)response

- (nsurlrequest *)connection:(nsurlconnection *)connection

willsendrequest:(nsurlrequest *)request

redirectresponse:(nsurlresponse *)redirectresponse

- (void)connection:(nsurlconnection *)connection

didreceivedata:(nsdata *)data

- (nscachedurlresponse *)connection:(nsurlconnection *)connection

willcacheresponse:(nscachedurlresponse *)cachedresponse

- (void)connectiondidfinishloading:(nsurlconnection *)connection

- (void)connection:(nsurlconnection *)connection

didfailwitherror:(nserror *)error

@end

記憶體快取機制

新聞 或者論壇訪問量都很大.而使用者每次瀏覽新聞或者帖子的時候如果去訪問一次資料庫 會造成速度慢.如果把資料庫一些內容載入到記憶體中,則速度會快很多.一般首頁新聞都是僅幾天更新的 我們可以在利用jms 或者 單獨乙個程序來掃瞄資料庫,將近5天的新聞載入到記憶體.或者限制1000條.map cache...

iOS的快取機制

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

iOS快取機制詳解

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