AlamoFire 忽略缓存控制标头

Posted

技术标签:

【中文标题】AlamoFire 忽略缓存控制标头【英文标题】:AlamoFire Ignore Cache-Control Headers 【发布时间】:2015-10-01 17:51:28 【问题描述】:

在使用 AlamoFire 执行请求/处理响应时是否可以忽略 cache-control 标头?

目前我正在发出如下请求,并且服务器返回较大的cache-control 标头,而实际上我们需要忽略它们。

Alamofire.request(.GET, url).responseJSON  (_, _, result) in // Do something

我知道正确的解决方案是修改服务器响应,但目前不可行。

此外,我确实希望在其他请求中尊重 cache-control 标头,因此理想情况下,我会提供一个不涉及更改 AlamoFire 全局配置的解决方案。

【问题讨论】:

【参考方案1】:

要忽略缓存的数据,需要在使用Alamofire启动之前在NSURLRequest上设置cachePolicy

let URL = NSURL(string: "https://my_url_path...")!
let URLRequest = NSMutableURLRequest(URL: URL)
URLRequest.cachePolicy = .ReloadIgnoringCacheData

Alamofire.request(URLRequest)
    .response  response in
        print(response)
    

在 URL 请求上设置 cachePolicy 始终会覆盖在 NSURLSessionConfiguration 上设置的值。

默认情况下,NSURLSessionConfiguration 缓存策略设置为 .UseProtocolCachePolicy,这将遵循 Cache-Control 标头值。

【讨论】:

以上是关于AlamoFire 忽略缓存控制标头的主要内容,如果未能解决你的问题,请参考以下文章

由于缓存控制标头,如何绕过 Internet Explorer 11 忽略我的字体?

如何覆盖 Alamofire SessionManager 以修改响应以添加标头?

Chrome 会忽略 ETag 标头,只使用内存缓存/磁盘缓存

Alamofire 不会自动设置“If-None-Match”标头

请求 Alamofire

发送 Alamofire JSON 数组 Swift