我的服务器正在发送适当的缓存头,但是URLSession不会缓存响应。有什么办法使它缓存,虽然它是一个404?
HTTP/1.1 404未找到内容-类型: application/json;charset=utf-8缓存-控制: public,max-age=30内容-长度:0日期: Fri 2022 10:39:43 GMT
发布于 2022-12-04 00:19:33
不幸的是,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的数据任务。然后,它使用一个守护语句来检查响应是否是HTTPURLResponse。如果是,如果状态代码等于200,则将shouldCacheResponse变量设置为true。最后,任务被恢复,函数返回shouldCacheResponse的值。
https://stackoverflow.com/questions/74654429
复制相似问题