1. NSURLRequestUseProtocolCachePolicy = 0,
默认缓存策略。具体工作:如果一个NSCachedURLResponse对于请求并不存在,数据将会从源端获取。如果请求拥有一个缓存的响应,那么URL加载系统会检查这个响应来决定,如果它指定内容必须重新生效的话。假如内容必须重新生效,将建立一个连向源端的连接来查看内容是否发生变化。假如内容没有变化,那么响应就从本地缓存返回数据。如果内容变化了,那么数据将从源端获取
2. NSURLRequestReloadIgnoringLocalCacheData = 1,
URL应该加载源端数据,不使用本地缓存数据
3. NSURLRequestReloadIgnoringLocalAndRemoteCacheData =4,
本地缓存数据、代理和其他中介都要忽视他们的缓存,直接加载源数据
4. NSURLRequestReloadIgnoringCacheData = NSURLRequestReloadIgnoringLocalCacheData, 两个的设置相同
5. NSURLRequestReturnCacheDataElseLoad = 2,
指定已存的缓存数据应该用来响应请求,不管它的生命时长和过期时间。如果在缓存中没有已存数据来响应请求的话,数据从源端加载。
6. NSURLRequestReturnCacheDataDontLoad = 3,
指定已存的缓存数据用来满足请求,不管生命时长和过期时间。如果在缓存中没有已存数据来响应URL加载请求的话,不去尝试从源段加载数据,此时认为加载请求失败。这个常量指定了一个类似于离线模式的行为
7. NSURLRequestReloadRevalidatingCacheData = 5
指定如果已存的缓存数据被提供它的源段确认为有效则允许使用缓存数据响应请求,否则从源段加载数据。
Tips:
URL Loading System 默认只支持如下五中协议:
1. http://
2. https://
3. ftp://
4. file://
5. data://
其中只有响应http和https的请求会被缓存。ftp和文件协议当被缓存策略允许的时候尝试接入源段。自定义的NSURLProtocol类能够保护缓存,如果它们被选择使用的话。
小结:NSURLRequestReturnCacheDataDontLoad是用于离线模式的,为了能让用户在离线下面阅读,可以设计当没有网络的时候的策略为NSURLRequestReturnCacheDataDontLoad。