NSURLConnection AFN 快取機制

2021-06-29 01:49:55 字數 2089 閱讀 1439

1. url快取基本概念

nsurlcache 提供了記憶體與磁碟的快取機制。

任何通過nsurlconnection 載入的請求都會 nsurlcache 處理,因為 afnetworking 使用了nsurlconnection ,所以也會被處理。

當完成資料的請求後,快取的相應被儲存在本地(沙盒目錄為library/cache/目錄下,每乙個不同的請求會生成乙個資料夾,儲存的檔案為nsdata檔案。)當下一次同樣的請求時,直接從快取中獲取即可。

因此網路快取減少了與伺服器的負擔,並提高應用程式更好的體驗。

二 : 設定nsurlcache

1. 使用url快取首先要使nsurlcache進行初始化。url 快取預設大小為memory 4 * 1024 * 1024 btye disk 20 * 1024 * 1024byts

2. 在首次使用url換粗之前就初始化nsurlcache,這樣才能使用url快取,因此通常情況下在

nsurlcache * cache = [[nsurlcachealloc] initwithmemorycapacity:5 * 1024 * 1024

diskcapacity:25 * 1024 * 1024

diskpath:nil];

[nsurlcachesetsharedurlcache:cache];

三 : 設定nsmutableurlrequest的requestsetcachepolicy即快取策略

nsurlrequestuseprotocolc

achepolicy= 0,預設快取策略。具體工作:如果乙個nscachedurlresponse對於請求並不存在,資料將會從源端獲取。如果請求擁有乙個快取的響應,那麼url載入系統會檢查這個響應來決定,如果它指定內容必須重新生效的話,將建立乙個連向源端的連線來檢視內容是否發生變化。假如內容沒有變化,那麼響應就從本地快取返回資料。如果內容變化了,那麼資料將從源端獲取。

nsurlrequestreloadignori

nglocalcachedata = 1,url應該載入源端資料,不使用本地快取資料

nsurlrequestreloadignori

nglocalandremotecachedat

a =4,本地快取資料、**和其他中介都要忽視他們的快取,直接載入源資料

nsurlrequestreloadignori

ngcachedata =nsurlrequestreloadignori

nglocalcachedata, 兩個的設定相同

nsurlrequestreturncached

ataelseload = 2,指定已存的快取資料應該用來響應請求,不管它的生命時長和過期時間。如果在快取中沒有已存資料來響應請求的話,資料從源端載入。

nsurlrequestreturncached

atadontload = 3,指定已存的快取資料用來滿足請求,不管生命時長和過期時間。如果在快取中沒有已存資料來響應url載入請求的話,不去嘗試從源段載入資料,此時認為載入請求失敗。這個常量指定了乙個類似於離線模式的行為

nsurlrequestreloadrevali

datingcachedata = 5指定如果已存的快取資料被提供它的源段確認為有效則允許使用快取資料響應請求,否則從源段載入資料。

只有響應http和https的請求會被快取。ftp和檔案協議當被快取策略允許的時候嘗試接入源段。自定義的nsurlprotocol類能夠保護快取,如果它們被選擇使用的話。

示例:nsmutableurlrequest * request =[nsmutableurlrequest requestwithurl:[nsurlurlwithstring:@""]];

[requestsetcachepolicy:nsurlrequestreturncached

atadontload];

四 :url快取的使用

1  獲取快取

nscachedurlresponse * response =[cache cachedresponseforrequest

:request];

if (response != nil) else

2. 獲得快取就可以賦值更新ui了。

網路請求 NSURLConnection

http和https http協議,hyper transfer protocol 超文字傳輸協議 是用於全球資訊網 www 伺服器傳送超文字到本地瀏覽器的傳輸協議,http是乙個應用層協議,由請求和響應構成,是乙個標準的客戶端伺服器模型.工作原理 http協議採用請求 響應模型.客戶端向伺服器傳送...

NSURLConnection 非同步請求

匯入第三方庫svprogresshud import viewcontroller.h import svprogresshud.h import mjrefresh.h inte ce viewcontroller property retain nsmutablearray datasource...

NSURLConnection同步與非同步請求

非同步請求 nsmutabledata buf nsmutabledata alloc initwithlength 0 nsurlconnection connection nsurlconnection alloc initwithrequest req delegate self 收到響應時,...