iOS 記憶體快取

2021-07-11 12:19:13 字數 2387 閱讀 6167

使用快取的目的是為了使用的應用程式能更快速的響應使用者輸入,是程式高效的執行。有時候我們需要將遠端web伺服器獲取的資料快取起來,減少對同乙個url多次請求。

記憶體快取我們可以使用sdk中的nsurlcache類。nsurlrequest需要乙個快取引數來說明它請求的url何如快取資料的,我們先看下它的cachepolicy型別。

nsurlcache還提供了很多方法,來方便我們實現應用程式的快取機制。下面我通過乙個例子來說明,這個例子減少我們對同乙個url多次請求。看下面**:

nsstring

*paramurlasstring=

@"";if

([paramurlasstring

length

] ==0)

nsurlcache

*urlcache = [

nsurlcache

sharedurlcache

];/*

設定快取的大小為

1m*/

[urlcache

setmemorycapacity:1

*1024

*1024

];//

建立乙個

nsurl

nsurl

*url = [

nsurl

urlwithstring

:paramurlasstring];

//建立乙個請求

nsmutableurlrequest

*request =

[nsmutableurlrequest

requestwithurl

:url

cachepolicy

:nsurlrequestuseprotocolcachepolicy

timeoutinterval

:60.0f

];//

從請求中獲取快取輸出

nscachedurlresponse

*response =

[urlcache

cachedresponseforrequest

:request];

//判斷是否有快取

if(response !=

nil)

#pragma mark ---

在下面進行資料請求 /*

建立nsurlconnection*/

nsurlconnection

*newconnection =

[[nsurlconnection

alloc

]initwithrequest

:request

delegate

:self

startimmediately

:yes];

nsurlrequestcachepolicy 快取策略

1> nsurlrequestuseprotocolcachepolicy = 0, 預設的快取策略, 如果快取不存在,直接從服務端獲取。如果快取存在,會根據response中的cache-control欄位判斷下一步操作,如: cache-control欄位為must-revalidata, 則詢問服務端該資料是否有更新,無更新的話直接返回給使用者快取資料,若已更新,則請求服務端.

2> nsurlrequestreloadignoringlocalcachedata = 1, 忽略本地快取資料,直接請求服務端.

3> nsurlrequestignoringlocalandremotecachedata = 4, 忽略本地快取,**伺服器以及其他中介,直接請求源服務端.

4> nsurlrequestreloadignoringcachedata = nsurlrequestreloadignoringlocalcachedata

5> nsurlrequestreturncachedataelseload = 2, 

有快取就使用,不管其有效性(

即忽略cache-control

字段), 

無則請求服務端.

6> nsurlrequestreturncachedatadontload = 3, 

死活載入本地快取. 

沒有就失敗. (

確定當前無網路時使用)

7> nsurlrequestreloadrevalidatingcachedata = 5, 快取資料必須得得到服務端確認有效才使用(貌似是nsurlrequestuseprotocolcachepolicy中的一種情況)

tips: url loading system預設只支援如下5中協議: 其中只有

http://和https://才有快取策略.

iOS快取 記憶體快取

為了減少與伺服器的連線溝通次數,提高應用程式的執行速度,使用了ios的快取機制 import youngviewcontroller.h inte ce youngviewcontroller end implementation youngviewcontroller void viewdidlo...

iOS快取 記憶體快取

為了減少與伺服器的連線溝通次數,提高應用程式的執行速度,使用了ios的快取機制 import youngviewcontroller.h inte ce youngviewcontroller end implementation youngviewcontroller void viewdidlo...

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

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