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 标头,只使用内存缓存/磁盘缓存