国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

iOS開發ASIHTTPRequest使用download cache

移動開發 iOS
本文為大家介紹了iOS開發ASIHTTPRequest使用download cache的內容,其中包括cache策略,存儲策略,其他cache相關的特性,編寫自己的cache等等內容。

本文為大家介紹了iOS開發ASIHTTPRequest使用download cache的內容,其中包括cache策略,存儲策略,其他cache相關的特性,編寫自己的cache等等內容。

從1.8版本開始,ASIDownloadCache和ASICacheDelegate的API改變了,你可能需要修改你的代碼。

尤其是,cache策略的可用選項發生了改變,你現在可以對單一request使用結合的cache策略

ASIHTTPRequest可以自動緩存下載的數據,在很多情況下這很有用。

  • 當你離線時,你無法再次下載數據,而你又需要訪問這些數據
  • 從上次下載這些數據后,你只想在數據更新后才下載新的數據
  • 你處理的數據永遠不會發生改變,所以你只想下載一次數據

在之前版本的ASIHTTPRequest里,遇到上述情況,你只能自己處理這些策略。在一些情況下,使用download cache可以讓你不用再寫本地緩存機制。

ASIDownloadCache 是個簡單的URL cache,可以用來緩存GET請求的相應數據。一個request要被緩存,它首先必須請求成功(沒有發送錯誤),服務器必須返回200HTTP狀態值。或者,從1.8.1版本開始,301,302,303,307重定向狀態碼都可以。

要打開響應值的cache機制很簡單:

  1. [ASIHTTPRequest setDefaultCache:[ASIDownloadCache sharedCache]]; 

這樣做以后,所有的request都會自動使用cache。如果你愿意,你可以讓不同的request使用共享的cache:

  1. ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 
  2. [request setDownloadCache:[ASIDownloadCache sharedCache]]; 

你不會被局限于使用單一的cache,你可以想創建多少cache就創建多少cache,只要你喜歡 ^ ^。當你自己創建一個cache,你必須設定cache的路徑——這路徑必須是一個你擁有寫權限的目錄。

  1. ASIDownloadCache *cache = [[[ASIDownloadCache alloc] init] autorelease]; 
  2. [cache setStoragePath:@"/Users/ben/Documents/Cached-Downloads"]; 
  3.  
  4. //別忘了 - 你必須自己retaining你自己的cache! 
  5. [self setMyCache:cache]; 
  6.  
  7. ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 
  8. [request setDownloadCache:[self myCache]]; 

cache策略

cache策略是你控制cache中信息的主要方法,控制何時使用cache數據而非重新下載數據。

每個request的cache策略可是由request的cachePolicy 屬性來控制的。cache策略使用掩碼來定義,所以你可以二進制“與”操作他們。

  1. // 每次都向服務器詢問是否有新的內容可用, 
  2. // 如果請求失敗, 使用cache的數據,即使這個數據已經過期了 
  3. [request setCachePolicy:ASIAskServerIfModifiedCachePolicy|ASIFallbackToCacheIfLoadFailsCachePolicy]; 

你可以使用下列cache策略選項來控制request的緩存策略:

ASIUseDefaultCachePolicy

默認的cache 策略。請勿將這一項與其他項結合使用。當你設置一個request使用cache,它會使用cache的defaultCachePolicy. ASIDownloadCache的默認cache策略是‘ASIAskServerIfModifiedWhenStaleCachePolicy’. 

ASIDoNotReadFromCacheCachePolicy

使用這一項,request將不會從cache中讀取數據

ASIDoNotWriteToCacheCachePolicy

使用這一項,request將不會把數據存入cache

ASIAskServerIfModifiedWhen

StaleCachePolicy

這是ASIDownloadCaches的默認cache策略。使用這個策略時,request會先查看cache中是否有可用的緩存數據。如果沒有,request會像普通request那樣工作。

如果有緩存數據并且緩存數據沒有過期,那么request會使用緩存的數據,而且不會向服務器通信。如果緩存數據過期了,request會先進行GET請求來想服務器詢問數據是否有新的版本。如果服務器說緩存的數據就是當前版本,那么緩存數據將被使用,不會下載新數據。在這種情況下,cache的有效期將被設定為服務器端提供的新的有效期。如果服務器提供更新的內容,那么新內容會被下載,并且新的數據以及它的有效期將被寫入cache。

ASIAskServerIfModifiedCachePolicy

這一項與ASIAskServerIfModifiedWhenStaleCachePolicy相同,除了一點:request將會每次都詢問服務器端數據是否有更新。

ASIOnlyLoadIfNotCachedCachePolicy

使用這一項,cache數據將一直被使用,無視過期時間

ASIDontLoadCachePolicy

使用這一項時,只有當響應數據有緩存時,request才會成功。如果一個request沒有緩存的響應數據,那么這個request將會停止,并且不會有錯誤設置在request上。

ASIFallbackToCacheIf

LoadFailsCachePolicy

當使用這一項時,當request失敗時,request會回頭請求cache數據。如果請求失敗后,request使用的cache數據,那么這個request會成功(沒有錯誤)。你通常會將這一項與其他項結合使用,因為它適用于指定當發生錯誤時request的行為。

當你設定了一個cache對象的defaultCachePolicy 屬性,所有使用這個cache對象的request都會使用這個cache策略,除非你為request設置了另外的策略。

存儲策略

存儲策略允許你定義一個cache可以存儲特定的相應數據多久。ASIHTTPRequest目前支持兩種存儲策略:

ASICacheForSessionDurationCacheStoragePolicy是默認值。相應數據只會在會話期間被存儲,在第一次使用cache時,或者在調用 [ASIHTTPRequest clearSession]時,數據會被清除。

使用ASICachePermanentlyCacheStoragePolicy,緩存的相應數據會被永久存儲。要使用這個存儲策略,向request設置:

  1. ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 
  2. [request setCacheStoragePolicy:ASICachePermanentlyCacheStoragePolicy]; 

要手動清除cache,調用函數clearCachedResponsesForStoragePolicy:,傳入要清除的cache數據的存儲策略:

  1. [[ASIDownloadCache sharedCache] clearCachedResponsesForStoragePolicy:ASICachePermanentlyCacheStoragePolicy]; 

其他cache相關的特性

  1. // 當你關閉 shouldRespectCacheControlHeaders,cache對象會存儲響應數據,而無視 
  2. // 服務器的顯式“請勿緩存”聲明 (例如:cache-control 或者pragma: no-cache 頭) 
  3. [[ASIDownloadCache sharedCache] setShouldRespectCacheControlHeaders:NO]; 
  4.  
  5. // 可以設定request的secondsToCache來覆蓋服務器設定的內容有效期, 這時,響應數據 
  6. // 會一直被緩存,直到經過secondsToCache秒 
  7. ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 
  8. [request setSecondsToCache:60*60*24*30]; // 緩存30 天 
  9.  
  10. //當request開始執行后,如果響應數據是從緩存中取得的,didUseCachedResponse 會返回YES 
  11. [request didUseCachedResponse]; 
  12.  
  13. // 向cache對象索取一個路徑來存儲相應數據. 這是使用download cache的最有效率的方法, 
  14. // 因為此時,當request完成后,數據不需要被復制到cache中. 
  15. [request setDownloadDestinationPath: 
  16.    [[ASIDownloadCache sharedCache] pathToStoreCachedResponseDataForRequest:request]]; 

編寫自己的cache

如果你已經持有一個download cache并且想將他插入ASIHTTPRequest中,或者你喜歡自己寫自己的download cache,那么讓你的cache實現ASICacheDelegate協議。

責任編輯:閆佳明 來源: dreamingwish
相關推薦

2013-07-22 14:33:15

iOS開發ASIHTTPRequ

2013-07-22 13:48:55

iOS開發ASIHTTPRequ使用Cookie

2013-07-21 18:22:59

iOS開發ASIHTTPRequ

2013-07-22 14:38:00

iOS開發ASIHTTPRequ

2013-07-21 18:18:00

iOS開發ASIHttpRequ

2013-07-21 18:27:15

iOS開發ASIHTTPRequ

2013-07-22 13:54:32

iOS開發ASIHTTPRequ

2013-07-21 18:32:13

iOS開發ASIHTTPRequ

2013-07-22 14:43:57

iOS開發ASIHTTPRequ

2013-07-22 14:25:29

iOS開發ASIHTTPRequ

2013-07-21 18:09:21

iOS開發ASIHttpRequ創建和執行reques

2013-07-22 14:02:17

iOS開發ASIHTTPRequ

2013-07-22 14:29:35

iOS開發ASIHTTPRequ

2013-07-21 18:04:22

ASIHttpRequiOS開發

2013-03-25 14:13:23

iOSASIHTTPRequ

2011-08-22 10:06:38

IOS開發ASIHTTPRequHTTP 請求

2013-07-22 14:10:26

iOS開發ASIHTTPRequ

2011-08-10 17:37:00

iPhoneASIHTTPRequ

2011-08-12 13:35:23

iPhone文件流ASIHTTPRequ

2009-06-29 09:00:42

Hibernate的Q
點贊
收藏

51CTO技術棧公眾號

国产精品沙发午睡系列| 成人黄色电影网址| 99久久婷婷国产综合精品首页 | 国产一区二区三区精品视频| 国内精品中文字幕| 欧美人与性动交α欧美精品济南到 | 欧美性xxxxx| 91免费视频网站在线观看| 亚洲一本二本| 久久99热这里只有精品国产| 超碰在线caoporn| 亚洲成人av一区二区| 久久综合久久久久| 久久深夜福利| 亚洲最大福利视频网站| 天天操综合520| 久久久成人的性感天堂| 欧美亚洲国产日韩| 免费看黄色一级大片| 性爱视频在线播放| 在线精品视频一区二区三四| 88av在线| 欧美乱熟臀69xxxxxx| 中文一区二区| 天堂8在线天堂资源bt| 色喇叭免费久久综合网| 久久精品国产一区二区电影| 国产精品片aa在线观看| 国产精品久在线观看| 久久久久久久久亚洲精品| 成人99免费视频| 欧美一区久久久| 国产精品96久久久久久| 亚洲一级高清| 日韩不卡一二三| 久久久久久美女精品| 久久久国内精品| 激情六月婷婷综合| 另类av导航| 91久久精品国产91性色tv| 欧美一级爽aaaaa大片| 欧美 日韩 国产 一区| 日本一区二区三区视频在线观看| 亚洲福利影院| 日韩风俗一区 二区| 久久中文字幕电影| 66av99| 最近2019年日本中文免费字幕 | 精品一区二区亚洲| av高清一区| 秋霞影院一区二区| 久久亚洲免费| 免费亚洲婷婷| 日韩av图片| 久久精品国产久精国产| 中文字幕综合在线观看| 精品一区二区三区视频在线观看 | 免费美女久久99| 日韩在线导航| 久久99蜜桃精品| 日韩精品一区二区在线视频| 91小视频在线| 免费av网页| 欧美日韩国产免费| 松下纱荣子在线观看| www日韩欧美| 日韩有码中文字幕在线| 444亚洲人体| 久久精品999| 青青在线免费观看视频| 亚洲精选一二三| a天堂中文在线88| 日韩精品免费电影| 国内自拍欧美| 成人免费在线一区二区三区| 日本中文一区二区三区| 18禁男女爽爽爽午夜网站免费| 国产99久久久国产精品潘金 | 黄色在线观看www| 中文字幕亚洲专区| 91欧美日韩在线| 91免费国产网站| 精品影视av免费| 成人综合网址| 欧美一区二区播放| 97久久精品| 国产一区二区在线网站| 国产成人综合亚洲网站| 国产精美视频| 精品播放一区二区| 韩国精品福利一区二区三区| 精品视频高清无人区区二区三区| 成人午夜电影网站| 头脑特工队2在线播放| 日韩国产高清视频在线| 色吊丝一区二区| 亚洲成色www久久网站| 欧美韩日一区二区三区| 一级毛片视频在线| 欧美激情videoshd| 噜噜噜91成人网| 国产aa视频| 亚洲人成在线免费观看| 婷婷伊人综合| 日本a级片免费观看| 91成人国产精品| 国产精久久久| 久久久综合香蕉尹人综合网| 久久免费美女视频| 国产白丝在线观看| 91精品久久久久久久久久另类| 国产精品88888| lutube成人福利在线观看| 久久久久久av| 国产乱码精品一区二区三区忘忧草| 亚洲美女在线免费观看| 亚洲人成欧美中文字幕| 女生裸体视频一区二区三区| 精品国产成人av在线免| 91精品国产综合久久精品| 黑人操亚洲人| 国产一级爱c视频| 日韩视频一区二区三区在线播放 | 日韩一区二区精品| 久久不见久久见国语| 亚洲国产一区二区三区在线播| 亚洲成a人片综合在线| 国产一区精品二区| 色呦呦网站入口| 在线观看视频一区| 久久最新网址| 欧美日韩亚洲第一| 亚洲欧洲xxxx| 久久午夜精品| caoporn国产精品免费视频| 国产91在线播放九色快色| 久久久久久电影| 97在线超碰| 久久婷婷国产综合尤物精品| 疯狂欧美牲乱大交777| 天天操综合520| 午夜精品久久久久久久无码| 亚洲精品videossex少妇| 韩日精品在线| 日本成本人片免费观看| 欧美极品美女电影一区| 成人毛片在线观看| 性高爱久久久久久久久| 亚洲国产激情一区二区三区| 91久久一区二区| 91精品啪在线观看国产18 | 亚洲精品一二区| 老牛国产精品一区的观看方式| 亚洲人性生活视频| 国产精品美女网站| 综合欧美亚洲日本| 欧美美女搞黄| 92福利视频午夜1000合集在线观看| 日本一区二区三级电影在线观看| 123成人网| 欧美深夜福利视频| 在线播放日韩精品| 99精品国产热久久91蜜凸| 亚洲国产综合在线观看| 日韩精品免费一区| 精品国内亚洲在观看18黄| 国产99久久久久| 可播放的18gay1069| 国产成人精品久久久| 亚洲成人手机在线| 亚洲综合色网| 尤物视频在线免费观看| 欧美日韩在线观看一区二区三区| 日韩免费视频线观看| 免费成人在线影院| 日本欧美日韩| 国产精品亚洲二区在线观看| 午夜精品久久久久久久99黑人| 18成人在线观看| 91精品二区| h片在线播放| 国产精品自拍合集| 欧美人成在线视频| 亚洲一区二区不卡免费| 91精品啪在线观看国产81旧版| 9191在线观看| 成人免费看片视频在线观看| 一本色道久久88综合亚洲精品ⅰ| 久久综合久久综合久久| 天天久久夜夜| 日本在线观看www| 日韩欧美猛交xxxxx无码| 粗暴蹂躏中文一区二区三区| 亚洲精品日日夜夜| 亚洲成人中文| 色是在线视频| 成年人视频在线网站| 欧美大片免费看| 在线看日韩精品电影| 国产精品自拍网站|