You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 09:58:03