URLCache需设置远大于响应内容的磁盘与内存容量才能缓存的原因咨询
URLCache需设置远大于响应内容的磁盘与内存容量才能缓存的原因咨询
我写了这么一段Swift代码来配置自定义的URLCache和URLSession:
let customCache: URLCache = { let cacheSizeMemory = 512 * 1024 * 1024 let cacheSizeDisk = 512 * 1024 * 1024 return URLCache(memoryCapacity: cacheSizeMemory, diskCapacity: cacheSizeDisk, diskPath: "serverTest") }() let customSession: URLSession = { // Create a custom URLSessionConfiguration let sessionConfiguration = URLSessionConfiguration.default sessionConfiguration.urlCache = customCache sessionConfiguration.requestCachePolicy = .useProtocolCachePolicy // Create a custom URLSession with the configuration let customSession = URLSession(configuration: sessionConfiguration) return customSession }()
服务器返回的响应头里有这些字段:
< content-length: 93828673 < cache-control: public, max-age=300
按说根据这些头信息,设备应该把响应缓存5分钟,但实际并没有生效。
可是当我把缓存容量改成下面这样时,缓存就正常工作了:
let cacheSizeMemory = 512 * 1024 * 1024 * 5 let cacheSizeDisk = 512 * 1024 * 1024 * 5
这完全说不通啊——响应内容只有93,828,673字节,远小于原来设置的536,870,912字节的缓存上限。
难道Apple的URLCache有什么隐藏机制,比如单个响应的缓存大小不能超过总缓存容量的某个百分比吗?我没找到相关文档,但这是我能想到的唯一解释了。
备注:内容来源于stack exchange,提问作者Charlie Fish
相关产品推荐
相关产品推荐

