NSURLCache
OSX (10.7) で成功できません:
NSURLCache *cache = [[NSURLCache alloc] initWithMemoryCapacity:1024*1024*20
diskCapacity:1024*1024*5
diskPath:NSHomeDirectory()];
[NSURLCache setSharedURLCache:cache];
NSMutableURLRequest *req=[NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://wikipedia.org/"]
cachePolicy:NSURLRequestReturnCacheDataElseLoad
timeoutInterval:60];
NSData *data = [NSURLConnection sendSynchronousRequest:req returningResponse:nil error:nil];
NSLog(@"Received %lu bytes", [data length]);
sleep(10);
[req setCachePolicy:NSURLRequestReturnCacheDataDontLoad];
data = [NSURLConnection sendSynchronousRequest:req returningResponse:nil error:nil];
NSLog(@"Received %lu bytes", [data length]);
- 最初の問題は、これを SDK10.6 でビルドすると、2 番目のリクエストが 0 バイトを受け取ることです。
- SDK10.7 でビルドすると動作するように見えますが、キャッシュを永続ストレージに使用できません。プログラムを再起動した後、最初の応答がキャッシュから読み込まれず、サーバーから読み込まれます。キャッシュ ポリシーでリクエストを初期化すると
NSURLRequestReturnCacheDataDontLoad
、応答で 0 バイトが返されます。 - たとえば、メモリ制限を 5 バイトに設定すると、2 番目のリクエストは 0 バイトを受け取ります。
どちらの場合もファイル Cache.db が作成され、有効なデータがあるように見えますが、オンディスク キャッシュは機能しません。
何が問題なのNSURLCache
ですか? または、私は何を間違っていますか?