YTKResourceCache 0.1.1

YTKResourceCache 0.1.1

Maintained by xiaochun0618.



  • By
  • lihc

YTKResourceCache

CI Status Version License Platform

YTKResourceCache 是什么

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

YTKResourceCache 提供了哪些功能

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

哪些项目适合使用 YTKResourceCache

YTKResourceCache 适合ObjectC实现的项目,并且项目中对于请求有拦截需求、对于Get资源请求有缓存需求的项目,YTKResourceCache会提供一整套解决方案,可以节省开发成本

YTKResourceCache 的基本思想

YTKResourceCache一共提供两种能力,请求拦截与资源下载缓存写入读取。

请求拦截主要基于NSURLProtocol来实现,可以指定知否拦截请求,如果拦截请求就要负责给出拦截请求的应答数据,缓存数据可以从本地缓存读取,也可以从实际网络请求返回读取。

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

安装

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

pod 'YTKResourceCache'

安装要求

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

例子

clone当前repo, 到Example目录下执行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 文件来获得更多信息。