如何使用Alamofire缓存文件下载请求?

时间:2017-06-24 20:23:48

标签: ios swift alamofire nsurlcache

我一直在尝试实现从网址下载的文件的缓存。文件大小约为5 MB。 下面是我从该文件中获取的标题url:

Content-Type : application/x-zip-compressed
Content-Length : 4088083
Expires : Sun, 24 Jun 2018 20:10:51 GMT
Etag : "1e2ec46bcg24f13"
X-Powered-By : ASP.NET
Last-Modified : Thu, 22 Jun 2017 11:21:48 GMT
Accept-Ranges : bytes
Server : Microsoft-IIS/8.0
Date : Sat, 24 Jun 2017 20:10:48 GMT
Cache-Control : public,max-age=31536000

我使用以下方式创建下载请求:

var request = URLRequest(url: URL(string: downloadUrl)!, cachePolicy: URLRequest.CachePolicy.returnCacheDataElseLoad, timeoutInterval: 120)
request.addValue("public", forHTTPHeaderField: "Cache-Control")

文件下载成功,但未缓存。当我下线并尝试下载时,我得到“互联网连接似乎处于离线状态。”错误。

我尝试从AppDelegate didFinishLaunch

更改下面的URLCache
let urlCache = URLCache(memoryCapacity: 4 * 1024 * 1024, diskCapacity: 20 * 1024 * 1024, diskPath: nil)
URLCache.shared = urlCache

但没有运气。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

我认为这很简单:

let request = isNetwork ? 
  NSURLRequest(url: downloadUrl! as URL):   
  NSURLRequest(url: downloadUrl! as URL,cachePolicy:.returnCacheDataDontLoad, timeoutInterval:1);

如果检测到网络可用,则isNetwork为true。