gre*_*g3z 18 nsurlconnection nsurlrequest nsurlcache nsurlconnectiondelegate
我在特定文件夹上设置了NSURLCache(../../Application Support/Offline,因此它不会被OS随机删除),然后我发送NSURLRequest和NSURLRequestReturnCacheDataElseLoad策略.
如何判断由符合NSURLConnectionDelegate的类处理的响应是来自缓存还是来自网络?
关于这个问题的好文章:
http://andrewmarinov.com/ioss-corenetwork-lying/
基本上,从NSHTTPURLResponse开始,状态代码始终为200
因此,如果您确实需要知道,可以在发出请求之前检查项目是否在缓存中
NSCachedURLResponse *cachedResponse = [[NSURLCache sharedURLCache] cachedResponseForRequest:request];
NSHTTPURLResponse *httpCacheResponse = (NSHTTPURLResponse *)cachedResponse.response;
Run Code Online (Sandbox Code Playgroud)
如果是这样,请保存修改后的"etag"或"modified-date"标题
NSString* etag = httpCacheResponse.allHeaderFields[@"etag"];
Run Code Online (Sandbox Code Playgroud)
然后,在响应处理程序中检查etag或modified-date是否相同.如果是这样,响应来自缓存!
| 归档时间: |
|
| 查看次数: |
2151 次 |
| 最近记录: |