UIWebView と NSURLCache sharedCache のキャッシュをテストするために、ARC 準拠の iOS 6 SDK ビルド アプリケーションをセットアップしました。
私は次のように UIWebView のリクエストを作成しています:
-(void)runRequestWithMode:(NSURLRequestCachePolicy)policyMode
{
NSString *theURL = @"http://server.mine.com:5555/test.htm";
NSURL *url = [[NSURL alloc] initWithString:theURL];
NSMutableURLRequest* urlRequest = [[NSMutableURLRequest alloc] initWithURL:url
cachePolicy:policyMode
timeoutInterval:30.0];
if ([urlRequest cachePolicy] != policyMode) {
NSLog(@"!!!!!!!!OVERRULED!!!!!!!");
}
[_webView loadRequest:urlRequest];
}
また、UIWebViewDelegate コールバック内でロードする必要があります。
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
// NSLog(@"webView shouldStartLoadWithRequest loading %@", [[request URL] absoluteString]);
NSLog(@"webView request cachePolicy: %d", [request cachePolicy]);
私のロギングのコンソール出力は、このコールバックが実行されるまでに、変更可能なリクエストに設定した cachePolicy をリクエストが使用していないことを示しています。
この時点でリクエストを操作して cachePolicy を正しい初期設定に設定しても、サーバー サイトはまだ 304 を報告しません (データ リクエストは変更されていないページであり、応答でキャッシュを使用するためです)。
Chrome を使用しているデスクトップからは、ページをリロードしたときにデバイスに表示される 200 に対して、サーバーから 304 応答が返されます。
アプリのデリゲートで、URL キャッシュを次のように設定しました。
NSURLCache *URLCache = [[NSURLCache alloc] initWithMemoryCapacity:4 * 1024 * 1024
diskCapacity:20 * 1024 * 1024
diskPath:nil];
[NSURLCache setSharedURLCache:URLCache];
アプリケーションの Web ビューで 304 応答を受け取るにはどうすればよいですか?
ドキュメントを読むためのヘルプやポインタをいただければ幸いです。