У меня была такая же проблема. Хотя я использовал:
[NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:30.0];
Кажется, он не хочет использовать кэшированные данные. Это означало, что он постоянно обращался к моему веб-сервису с просьбой получить последний контент и, таким образом, делал кеширование бесполезным.
Я нашел обходной путь. При загрузке URL в UIWebView используйте следующий код:
NSString *html = [NSString stringWithFormat:@"<html><head><script type=\"text/javascript\">location.href='%@';</script></head><body></body></html>", [[currentURLRequest URL] absoluteString]];
[self.webView loadHTMLString:html baseURL:nil];
Это было протестировано на OS 4.2, так как я использую манифест для обработки кэширования (HTML5). Существует большая вероятность того, что она не будет работать в OS 2.x / 3.x, но это необходимо подтвердить.
Недостатки использования этого метода в том, что вы не можете отправлять данные POST с вашим запросом.
Надеюсь, это кому-нибудь поможет.
Вам все еще нужно отправить запрос с 'cachePolicy: NSURLRequestReturnCacheDataElseLoad', иначе он все равно не будет работать.