iOS中的NSURLCache数据缓存类用法解析

2020-01-15 15:06:41于丽

//当前已用磁盘容量
@property (readonly) NSUInteger currentDiskUsage;

 

简单例子:

#import

@interface ViewController : UIViewController

@property (strong, nonatomic) NSURLConnection *connection;
@property (strong, nonatomic) NSURLCache *urlCache;
@property (strong, nonatomic) NSURL *url;
@property (strong, nonatomic) NSMutableURLRequest *request;

- (IBAction)reloadWebView:(UIButton *)sender;

@end

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    NSString *paramURLAsString= @"http://www.easck.com/u/2526279194";
    self.urlCache = [NSURLCache sharedURLCache];
  
    [self.urlCache setMemoryCapacity:1*1024*1024];
    //创建一个nsurl
    self.url = [NSURL URLWithString:paramURLAsString];
    //创建一个请求
    self.request=[NSMutableURLRequest requestWithURL:self.url
                                                   cachePolicy:NSURLRequestUseProtocolCachePolicy
                                   timeoutInterval:30.0f];
    [self.myWebView loadRequest:self.request];
}

 
这个例子中,我们请求url为http://www.easck.com/u/2526279194的网站。如果这个url被缓存了,我们直接从缓存中获取数据,否则从http://www.easck.com/u/2526279194站点上重新获取数据。我们设置了缓存大小为1M。


- (IBAction)reloadWebView:(UIButton *)sender {

    //从请求中获取缓存输出
    NSCachedURLResponse *response =[self.urlCache cachedResponseForRequest:self.request];
    //判断是否有缓存
    if (response != nil){
        NSLog(@"如果有缓存输出,从缓存中获取数据");
        [self.request setCachePolicy:NSURLRequestReturnCacheDataDontLoad];
    }
    [self.myWebView loadRequest:self.request];
   
    self.connection = nil;