gpt4 book ai didi

ios - 如何 [NSURLCache cachedResponseForRequest :] do its matching?

转载 作者:行者123 更新时间:2023-11-29 10:36:48 25 4
gpt4 key购买 nike

NSURLCache 如何确定它有一个请求的缓存响应?我不清楚两个 NSURLRequest 之间的相等性是如何定义的,或者它们是如何被散列的。

最佳答案

NSURLCache 有一个名为 cachePolicy 的属性,可用于指定要使用的缓存行为。默认值为 NSURLRequestUseProtocolCachePolicy,这意味着缓存逻辑由协议(protocol)实现定义(在大多数情况下是 HTTP)。

AFNetworking 的作者写了一篇文章,解释了每个策略之间的差异,以及默认策略如何针对 HTTP 协议(protocol)运行:NSURLCache - NSHipster .

+[NSURLProtocol requestIsCacheEquivalent:toRequest:] 方法的实现而言,这是我通过反编译得到的结果。我不能保证它 100% 准确,但它似乎有道理:

+ (BOOL)requestIsCacheEquivalent:(NSURLRequest*) a toRequest:(NSURLRequest*)b
{
if(a == b)
{
return YES;
}
else
{
Class classA = [self _protocolClassForRequest:a allowCF:YES];
Class classB = [self _protocolClassForRequest:b allowCF:YES];

if(classA != nil && classB != nil)
{
if(classA == classB)
{
// I assume this is to make sure it's not an abstract comparison
if([NSURLProtocol self] != self)
{
NSURL *urlA = [[classA canonicalRequestForRequest:a] URL];
NSURL *urlB = [[classB canonicalRequestForRequest:b] URL];

if([urlA isEqual:urlB])
{
return YES;
}
}
}
}

return NO;
}
}

关于ios - 如何 [NSURLCache cachedResponseForRequest :] do its matching?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26491274/

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