YTKResourceCache 0.1.1

YTKResourceCache 0.1.1

xiaochun0618维护。



  • lihc

YTKResourceCache

CI Status Version License Platform

YTKResourceCache 是什么

YTKResourceCache 是一套封装工具类,用于请求拦截、请求发送、请求应答数据缓存读写,主要依赖于NSURLProtocol实现。

YTKResourceCache 提供了哪些功能

  • 支持拦截所有的网络请求,可以设置只拦截webView请求。
  • 支持针对Get请求的拦截进行资源下载和缓存写入,针对非Get请求的拦截,需要使用者自定义请求行为。

哪些项目适合使用 YTKResourceCache

YTKResourceCache 适合用Objective-C实现的项目,并且项目中需要拦截请求和缓存Get资源请求的项目,YTKResourceCache提供了一整套解决方案,可以节省开发成本。

YTKResourceCache 的基本思想

YTKResourceCache提供了两种能力,请求拦截和资源下载缓存读写。

请求拦截主要基于NSURLProtocol实现,可以指定是否拦截请求,如果拦截请求,则负责提供拦截请求的应答数据,缓存数据可以来自本地缓存或实际网络请求的返回数据。

资源下载缓存读写主要依赖于YTKNetwork实现,如果Get请求被拦截且未命中本地缓存,则会根据当前Get请求下载资源并根据一定的规则写入磁盘,将文件内容返回给拦截的网络请求,这样下次拦截该请求就会命中缓存并直接返回缓存数据;对于非Get请求,需要用户判断是否拦截请求,如果拦截请求,则需要提供获取应答数据的方法。

安装

您可以在Podfile中加入以下一行代码来使用YTKResourceCache:

pod 'YTKResourceCache'

安装要求

YTKResourceCache 版本 最低 iOS Target 注意
0.1.0 iOS 7 要求 Xcode 7 以上

例子

从Example目录下clone当前repo,执行pod install命令即可运行示例工程。

使用方法

以下以YTKResourceCache默认设置为例:查询沙盒缓存文件作为拦截WebView get请求的条件,具体如下:

// YTKResourceCache 拦截WebView 请求默认设置(拦截WebView发送的Get请求、使用默认的文件查询策略查询沙盒文件,查询命中拦截,否则不拦截)
[[YTKResourceCache sharedCache] handleWebRequest];

UIWebView *webView = [UIWebView alloc] init];
// webView 加载URL代码略过

更多用法,请设置缓存loader,以下以设置YTKDownloadCacheLoader作为具有下载请求能力的loader为例:

id<YTKResourceCacheProtocol> cacheLoader = [[YTKDownloadCacheLoader alloc] init];
// 设置请求拦截数据返回方式
[[YTKResourceCache sharedCache] setCacheLoader:cacheLoader]; 

设置文件查找规则,以下以设置默认文件查找规则为例:

id<YTKCacheFileFinder> fileFinder = [YTKCacheFileFinder new];
// 设置查找文件规则

设置HTTPMethod过滤规则,以下以不根据请求HTTPMethod进行过滤为例:

// 设置不根据HTTPMethod Header进行拦截
[[YTKResourceCache sharedCache] setInterceptMethod:nil];

设置User-Agent过滤规则,以下以不根据User-Agent进行过滤为例:

// 设置不根据User-Agent Header进行拦截
[[YTKResourceCache sharedCache] setWebViewUserAgentPattern:nil];

设置额外的请求拦截返回头部信息,具体用法如下:

[[YTKResourceCache sharedCache] setExtraResponseHeader:@{@"Access-Control-Allow-Origin" : @"*"}];

作者

YTKResourceCache的主要作者是:

lihc, https://github.com/xiaochun0618

协议

YTKResourceCache遵循MIT协议使用。详细信息请查阅LICENSE文件。