2009-12-05 38 views

回答

0

NSURLConnection支持NSURLCache風格的緩存,並且在幕後爲您做了很多工作。它甚至有一個很好的委託方法,讓您操作cachedResponse:

- (NSCachedURLResponse *)connection:(NSURLConnection *)connection willCacheResponse:(NSCachedURLResponse *)cachedResponse

1

你可以在下降到ASI碼之前提供自己的高速緩存。

裹在有方法的類的ASI碼:

-(NSString *)getContentFor:(NSURL *)url

該方法首先檢查內部的NSDictionary,看它是否有存在的密鑰對指定的URL。如果是,則它返回與密鑰一起存儲的對象。

如果沒有,它將執行正常的ASIRequest。當從服務器收到請求時,它將它作爲字符串存儲在字典中,並使用url的鍵。

當然,您需要小心處理異步請求並過期舊請求。

1

任何人詢問他們如何使用ASIHTTPRequest直接執行此操作可能會對此代碼的branch感興趣,因爲這些代碼增加了對此功能的支持作爲選項。

3

ASIHTTPRequest現在支持緩存 - 檢查ASIDownloadCache即。

[ASIHTTPRequest setDefaultCache:[ASIDownloadCache sharedCache]] 
0

試試這個,它適用於我。

__block ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 
    [request setDownloadCache:[ASIDownloadCache sharedCache]]; 
    [request setCacheStoragePolicy:ASICachePermanentlyCacheStoragePolicy]; 
    [request setCachePolicy:ASIAskServerIfModifiedWhenStaleCachePolicy]; 
    [request setSecondsToCache:60*60*24]; // Cache for 24 hrs 
    [request setDelegate:self]; // A delegate must be specified 
    [request setCompletionBlock:^{ 
相關問題