我的服务器正在发送正确的缓存头,但是URLSession不会缓存响应。有什么方法可以使它缓存,尽管它是一个404?HTTP/1.1 404找不到内容类型:应用程序/json; charset=utf-8缓存控制:公共,最大年龄=30内容长度:0日期:2022年12月2日星期五10:39:43 GMT
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的值。
1条答案
按热度按时间brccelvz1#
不幸的是,URLSession使用HTTP状态码来决定是否要快取回应。因为状态码是404(找不到),所以不会快取回应。
最好的做法是确保服务器为要缓存的响应返回适当的状态代码(如200 OK)。
示例:
}
此代码是一个函数,它将URLRequest作为参数并返回布尔值。此代码使用URLSession创建带有URLRequest的数据任务。然后使用guard语句检查响应是否为HTTPURLResponse。如果是,则在状态代码等于200时将shouldCacheResponse变量设置为true。最后,任务将恢复,函数将返回shouldCacheResponse的值。