ios URLCache未缓存404响应

xoshrz7s  于 2022-12-05  发布在  iOS
关注(0)|答案(1)|浏览(141)

我的服务器正在发送正确的缓存头,但是URLSession不会缓存响应。有什么方法可以使它缓存,尽管它是一个404?
HTTP/1.1 404找不到内容类型:应用程序/json; charset=utf-8缓存控制:公共,最大年龄=30内容长度:0日期:2022年12月2日星期五10:39:43 GMT

brccelvz

brccelvz1#

不幸的是,URLSession使用HTTP状态码来决定是否要快取回应。因为状态码是404(找不到),所以不会快取回应。
最好的做法是确保服务器为要缓存的响应返回适当的状态代码(如200 OK)。
示例:

func shouldCacheResponse(for request: URLRequest) -> Bool {
let session = URLSession.shared
var shouldCacheResponse = false
let task = session.dataTask(with: request) {
    data, response, error in guard let response = response as? HTTPURLResponse
    else { return }
    shouldCacheResponse = response.statusCode == 200
}
task.resume()
return shouldCacheResponse

}
此代码是一个函数,它将URLRequest作为参数并返回布尔值。此代码使用URLSession创建带有URLRequest的数据任务。然后使用guard语句检查响应是否为HTTPURLResponse。如果是,则在状态代码等于200时将shouldCacheResponse变量设置为true。最后,任务将恢复,函数将返回shouldCacheResponse的值。

相关问题