gpt4 book ai didi

ios - 检查缓存的 HTTP 响应的有效性

转载 作者:搜寻专家 更新时间:2023-10-31 19:27:36 27 4
gpt4 key购买 nike

使用 URLSession 系列类,有没有办法检查响应的有效性?具体来说,我有一个 HTTP 响应,其 Cache-Control header 指定了 no-cache,因此任何缓存的响应都必须在使用前提交验证。我可以从 URLCache.shared 中检索到 CachedURLResponse 对象,但是 URLSessionURLCache 都没有CachedURLResponse 似乎有任何方法来确定这样的缓存响应是否仍然有效。 URLSessionDelegateURLSessionTaskDelegate 也没有此类方法。

除了自己发起实际的验证请求之外,还有什么方法可以做到这一点吗?大概这是在 URLSession 堆栈中的某处完成的(虽然我不确定这一点),但看起来好像这个功能可能不会被公共(public) API 公开。

最佳答案

问题是为什么要校验有效性。如果您只想检查有效性,您可以使用 URLProtocol 并编写自定义 NSURLProtocolClient 来使用可能不常见的方法。 .客户端只有空方法,除了:

func urlProtocol(_ protocol: URLProtocol, cachedResponseIsValid cachedResponse: CachedURLResponse) {
// Cached response is valid. Store this information in a appropriate way.
protocol.stopLoading()
}

现在,您与该客户端创建一个协议(protocol)

let myClient = ...
let protocol = NSURLProtocol(request, cachedResponse, client: myClient)

protocol.startLoading()
protocol.stopLoading() // Stop, if urlProtocol(_: cachedResponseIsValid:) was not called

关于ios - 检查缓存的 HTTP 响应的有效性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48067510/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com