2012-07-30 63 views
1

我在本地緩存UIWebView所需的一些較大的文件,並使用自定義實現的NSURLCache的子類來幫助提供這些文件。NSURLCache和.svg文件

- (NSCachedURLResponse *)cachedResponseForRequest:(NSURLRequest *)request 

我用這劫持請求並返回文件的本地存儲複製(主要是牛逼

cachedResponseForRequest的身體:請求(無鍋爐板)基本上是:

// logic to figure out what the local file is, load it into a NSData object (f) 
NSURLResponse *r = [[NSHTTPURLResponse alloc] initWithURL:request.URL MIMEType:mimetype expectedContentLength:[f length] textEncodingName:nil]; 
NSCachedURLResponse *cr = [[NSCachedURLResponse alloc] initWithResponse:r data:f] ; 
[super storeCachedResponse:cr forRequest:request]; 
return cr; 

對於所有緩存的內容,除了一張單獨的svg映像,它都能正常工作。當svg映像嘗試加載時,它將繼續執行cachedResponseForRequest:request,生成一個NSCachedURLResponse對象並將其返回。

但是,應用程序的下一件事是從遠程服務器下載文件,然後從緩存中提供任何後續請求。我們不想遠程下載文件,因爲它相對較大並影響性能。

NSURLCache處理.svg文件與其他文件類型不同嗎?

回答

0

將由NSUrlCache處理可以通過參數在初始化和緩存的影響的最大文件大小:

initWithMemoryCapacity:(NSUInteger)memoryCapacity diskCapacity:(NSUInteger)diskCapacity diskPath:(的NSString * )diskPath

最大文件大小與memoryCapacity有關。您應該將其設置爲至少10(爲什麼?)乘以您想要處理的最大文件大小。

我試過用15MB以下的文件使用https://github.com/evermeer/EVURLCache