我在本地緩存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文件與其他文件類型不同嗎?