客户端离线缓存策略(NSURLProtocol)

紧接这一篇:

截取本地URL请求(NSURLProtocol)

在开始进行缓存之前,我们首先创建一个数据持久化的东东,这里使用的是:

abcd.xcdatamodeld


创建完之后我们会生成一个h和m文件:

@interface CachedURLResponse :NSManagedObject


@property (nonatomic,retain)NSDate * timestamp;

@property (nonatomic,retain)NSData * data;

@property (nonatomic,retain)NSString * encoding;

@property (nonatomic,retain)NSString * mimeType;

@property (nonatomic,retain)NSString * url;


@end

上面的内容分别存储网页的 时间戳 数据 编码方式 超文本类型 以及 url。利用这些参数我们就可以还原网页。

通过前面的分析我们直到,NSURLProtocol中startLoading用于从网页上抓去数据:

下面分别修改三个方法实现一个简单的缓存功能:

/**

 @method获取网站上的数据 建立connect连接

 @parma :

 @return:

 */

- (void)startLoading {

   // 1.检查是否使用本地缓存

    CachedURLResponse *cachedResponse = [selfcachedResponseForCurrentRequest];

   if (cachedResponse) {

        NSLog(@"serving response from cache");

        

       // 2.

       NSData *data = cachedResponse.data;

       NSString *mimeType = cachedResponse.mimeType;

       NSString *encoding = cachedResponse.encoding;

        

       // 3.

       NSURLResponse *response = [[NSURLResponsealloc]initWithURL:self.request.URL

                                                           MIMEType:mimeType

                                              expectedContentLength:data.length

                                                   textEncodingName:encoding];

        

       // 4.

        [self.clientURLProtocol:selfdidReceiveResponse:responsecacheStoragePolicy:NSURLCacheStorageNotAllowed];

        [self.clientURLProtocol:selfdidLoadData:data];

        [self.clientURLProtocolDidFinishLoading:self];

    }else {

       // 5.

        NSLog(@"serving response from NSURLConnection");

        

       NSMutableURLRequest *newRequest = [self.requestmutableCopy];

        [NSURLProtocolsetProperty:@YESforKey:@"MyURLProtocolHandledKey"inRequest:newRequest];

        

       self.connection = [NSURLConnectionconnectionWithRequest:newRequestdelegate:self];

    }

}


#pragma mark --NSURLProtocol Delegate

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {

    [self.clientURLProtocol:selfdidReceiveResponse:responsecacheStoragePolicy:NSURLCacheStorageNotAllowed];

    

   self.response = response;

   self.mutableData = [[NSMutableDataalloc]init];

}


- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {

    [self.clientURLProtocol:selfdidLoadData:data];

    [self.mutableDataappendData:data];

}


- (void)connectionDidFinishLoading:(NSURLConnection *)connection {

    [self.clientURLProtocolDidFinishLoading:self];

    [selfsaveCachedResponse];

}

断开网络,运行之后会看到和IOS网络篇1之截取本地URL请求(NSURLProtocol)

相同的效果,不过这个界面可是从本地缓存中加载的。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Steam客户端离线安装包是指可以在没有网络连接的情况下安装并运行Steam客户端的软件包。这个安装包包含了全部的Steam客户端程序,可以通过下载到电脑中安装使用,安装后用户可以在没有网络连接的情况下使用Steam客户端离线安装包对于一些网络环境较差或者在没有网络连接的情况下需要使用Steam客户端的用户非常有用。通过离线安装包,用户可以在没有网络连接的情况下依然能够安装、更新或打开Steam客户端。同时,用户也可以通过下载离线安装包来备份Steam客户端并在需要时进行恢复。 下载Steam客户端离线安装包的方法可以在Steam官方网站上找到相关的资源。用户只需要在网站上找到对应的离线安装包下载链接,下载后解压安装即可。需要注意的是,离线安装包并不能保证永远都是最新版本,用户需要定期检查并更新离线安装包。 总的来说,Steam客户端离线安装包对于需要在没有网络连接的情况下使用Steam客户端的用户是一个非常方便的选择。通过下载离线安装包,用户可以在离线情况下依然充分体验Steam的各种功能。 ### 回答2: Steam客户端离线安装包是指在网络断开或者是没有网络的情况下,用户可以通过该离线安装包将Steam客户端程序下载到本地电脑上,从而完成Steam客户端的安装和使用。 一般来说,当我们需要在没有网络的情况下使用Steam客户端时,就需要下载这个离线安装包了。此外,当我们需要在多台电脑上安装Steam客户端时,使用离线安装包也会更为方便,因为我们只需要下载一次,然后通过U盘等移动存储设备,将该离线安装包复制到其他电脑上进行安装,便可以避免重复下载的问题,减少网络流量的消耗和时间上的浪费。 在使用Steam客户端离线安装包时,需要注意以下几点: 1. 确定自己的电脑是否具备安装Steam客户端的条件,例如操作系统、硬件等方面的要求需要满足。 2. 下载正确的离线安装包,根据自己使用的操作系统选择对应的版本进行下载。同时,也需要注意不要从未知的第三方网站进行下载,以防出现病毒等安全问题。 3. 在安装过程中,需要输入正确的Steam账号和密码,否则会无法登录到自己的账号中。 总的来说,Steam客户端离线安装包是为了用户更好的使用体验而设计的,能够让用户在没有网络或是多台电脑之间安装Steam客户端更加便利。用户在使用时,需要仔细阅读相关的使用说明,以保证使用安全顺利。 ### 回答3: Steam客户端离线安装包是指可以在没有网络连接的情况下,通过下载并安装这个离线安装包,来安装Steam客户端的程序。这种安装包通常是在官方网站上发布的,用户可以选择下载并安装它。 使用离线安装包的优点是它可以避免一些网络因素对安装过程产生的影响,安装速度也较快。它一般包含了所有的Steam客户端程序及所需要的组件,用户可以在没有网络的情况下安装Steam,这对于一些偏远地区或无网络环境的用户来说十分便利。同时,在有网络的情况下,可以使用离线安装包来安装Steam客户端,也可以加速下载速度或节省流量。 不过,使用离线安装包也有一些需要注意的地方。首先,由于其中包含所有需要的文件和组件,离线安装包的大小通常很大,在下载时需要相应的带宽和空间。其次,由于其中的程序不是实时更新的,可能会存在一些安全问题,所以需要及时更新程序以保持安全。最后,使用离线安装包安装的Steam客户端在软件和游戏的更新方面,需要自行进行手动操作。 总的来说,Steam客户端离线安装包是一种很好的解决方案,它可以避免网络问题对安装产生的影响,为用户提供了方便的选择,值得用户使用。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值