iOS7自带了NSURLSession
,借助NSURLSessionConfigure
,可以自定义URLCache ,所以我试了一下,但是没有运气,我的URLCache似乎根本没有使用。
- (void)testURLCache
{
NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];
config.requestCachePolicy = NSURLRequestUseProtocolCachePolicy;
NSURLCache *cache = [[NSURLCache alloc] initWithMemoryCapacity:1024 * 100 diskCapacity:1024 * 100 diskPath:@"test.urlcache"];
NSLog(@"usage:%lu", (unsigned long)[cache currentDiskUsage]);
config.URLCache = cache;
NSURLSession *session = [NSURLSession sessionWithConfiguration:config];
for (int i = 0; i < 40; i++) {
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://ajax.googleapis.com/ajax/libs/angularjs/1.2.6/angular.min.js?%d", i]]];
NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if (error) {
NSLog(@"error:%@", error);
} else {
NSLog(@"done:%d", i);
}
}];
[task resume];
[NSThread sleepForTimeInterval:0.5];
}
NSLog(@"usage:%lu", (unsigned long)[cache currentDiskUsage]);
}
我观察到的东西:
1)在test.urlcache
文件夹下创建一个文件Caches
夹,里面有3个文件Cache.db
,,,,大小为4KB Cache.db-shm
,里面没有记录。Cache.db-wal
Cache.db
2)每次运行代码,usage的第一次输出总是0,for循环结束后usage变成4096,下一次usage又变成0。