尽管缓存标头,如何在AFNetworking中强制执行缓存

时间:2012-07-11 19:11:31

标签: iphone ios http caching afnetworking

我想在AFNetworking中强制执行缓存,即使缓存头是Cache-Control:·private没有其他缓存相关的头,我知道它将是一个基于时间的缓存,我没有问题。

即使超出AFNetworking范围,也请提供建议。

我正在制作iOS 5 iPad应用程序,以下是我正在尝试缓存的XML文件中的头文件:

HTTP/1.1·200·OK(CR)(LF)
Cache-Control:·private(CR)(LF)
Content-Type:·text/xml;·charset=utf-8(CR)(LF)
Server:·Microsoft-IIS/7.5(CR)(LF)
X-AspNet-Version:·2.0.50727(CR)(LF)
X-Powered-By:·ASP.NET(CR)(LF)
Date:·Wed,·11·Jul·2012·18:42:27·GMT(CR)(LF)
Connection:·close(CR)(LF)
Content-Length:·20464(CR)(LF)
(CR)(LF)

提前致谢。

3 个答案:

答案 0 :(得分:0)

我发现此链接可能会对您有所帮助:https://github.com/AFNetworking/AFNetworking/issues/495

基本上,您可以覆盖NSURLConnection。

答案 1 :(得分:0)

除了覆盖NSURLConnection之外,我还想使用外部缓存管理,例如EGOCache。这将更灵活,您可以随时更改为其他缓存系统。

答案 2 :(得分:0)

创建NSURLRequest时(+ requestWithURL:cachePolicy:timeoutInterval:或者 - initWithURL:cachePolicy:timeoutInterval:),您可以使用以下值设置它的cachePolicy。

enum {
   NSURLRequestUseProtocolCachePolicy = 0,
   NSURLRequestReloadIgnoringLocalCacheData = 1,
   NSURLRequestReloadIgnoringLocalAndRemoteCacheData =4,
   NSURLRequestReloadIgnoringCacheData = NSURLRequestReloadIgnoringLocalCacheData,
   NSURLRequestReturnCacheDataElseLoad = 2,
   NSURLRequestReturnCacheDataDontLoad = 3,
   NSURLRequestReloadRevalidatingCacheData = 5
};
typedef NSUInteger NSURLRequestCachePolicy;

可以找到有关cachePolicy的更多详细信息here