客户端使用NSURLCache配合AFNetworking进行网络请求。 NSURLCache有以下一些缓存策略值,在NSMutableURLRequest的cachePolicy可以进行设置。
客户端的实现有以下几个要点:
- 在请求回调的block中加入对Etag值进行固化操作,使用NSKeyedArchiver的形式保存到本地文件,以请求的url后缀作为key
- AFHTTPClient继承自AFHTTPRequestOperationManager,需要重写HTTPRequestOperationWithRequest方法, 根据网络情况设置合适的缓存策略,即在有网络时通过Etag检查缓存一致性,无网络时直接使用缓存
- 在AppDelegate中需要对NSURLCache进行初始化,固化后的缓存文件会放在(App Sandbox)/Library/Caches/(your bundle identifier)/NSURLCache中,以SQLite数据库文件的形式存放
- 在Etag检查一致的情况下,服务端会返回304,此时需要在FailBlock中调用cachedResponseObject方法,取出本地缓存数据