iOS 自定义NSURLCache缓存磁盘

iOS 自定义NSURLCache缓存磁盘

当系统内置的网络数据缓存处理机制不能满足需求时,我们需要定制缓存机制

自定义MyURLCache继承NSURLCache

重写这两个方法:

-(NSCachedURLResponse*) cachedResponseForRequest:(NSURLRequest *)request{
    
    NSString *url = [[request URL] absoluteString];        
        NSString *filename = [self getCacheFileName:url];        
        //先从内存取,内存有就直接返回了。
        NSCachedURLResponse *cachedResponse = [cachedResponseMap objectForKey:filename];
        if (cachedResponse)
        {
            return cachedResponse;
        }
        
        //内存中没有,尝试从磁盘加载缓存。
        BOOL isCacheExisted = [[NSFileManager defaultManager] fileExistsAtPath:[mCacheDir stringByAppendingPathComponent:filename]];
        if(isCacheExisted)
        {
            NSCachedURLResponse * response = [self loadCacheFromDisk:request localFile:filename];
            if(response != nil)
            {
                NSLog(@"get cache from disk");
                [cachedResponseMap setObject:response forKey:filename];
                return response;
            }
        }
    return [NSURLCache.sharedURLCache cachedResponseForRequest:request];
}
- (void)storeCachedResponse:(NSCachedURLResponse *)cachedResponse forRequest:(NSURLRequest *)request
{
    if (nil != cachedResponse) {
        NSString *url = [[request URL] absoluteString];

            NSLog(@"storeCachedResponse(%@)",url);
            NSString *filename = [self getCacheFileName:url];
            [self storeCacheToDisk:cachedResponse localFile:filename];
            [cachedResponseMap setObject:cachedResponse forKey:filename];
            return;
        }
        [NSURLCache.sharedURLCache storeCachedResponse:cachedResponse forRequest:request];
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值