2

NSURLCacheOSX (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]);
  1. 最初の問題は、これを SDK10.6 でビルドすると、2 番目のリクエストが 0 バイトを受け取ることです。
  2. SDK10.7 でビルドすると動作するように見えますが、キャッシュを永続ストレージに使用できません。プログラムを再起動した後、最初の応答がキャッシュから読み込まれず、サーバーから読み込まれます。キャッシュ ポリシーでリクエストを初期化するとNSURLRequestReturnCacheDataDontLoad、応答で 0 バイトが返されます。
  3. たとえば、メモリ制限を 5 バイトに設定すると、2 番目のリクエストは 0 バイトを受け取ります。

どちらの場合もファイル Cache.db が作成され、有効なデータがあるように見えますが、オンディスク キャッシュは機能しません。

何が問題なのNSURLCacheですか? または、私は何を間違っていますか?

4

0 に答える 0