菜鸟教程小白 发表于 2022-12-13 05:28:25

ios - AFNetworking 2.0 上的缓存


                                            <p><p>所以这就是交易。我最近开始使用 AFNetworking 在开始时使用以下代码下载一些文件:</p>

<pre><code>NSMutableURLRequest* rq = ;
AFHTTPRequestOperation *operation = [[ initWithRequest:rq] autorelease];

NSString* path=[@&#34;/PATH/TO/APP&#34; stringByAppendingPathComponent: imageNameToDisk];
operation.outputStream = ;

[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {

    NSLog(@&#34;SUCCCESSFULL IMG RETRIEVE to %@!&#34;,path)

} failure:^(AFHTTPRequestOperation *operation, NSError *error) {

    // Deal with failure
}];
</code></pre>

<p>我的路径实际上插入了路径变量(对不起,现在不在正确的计算机上实际复制意大利面文本,但它与上面的完全相同,但路径不同)</p>

<p>一切都很好!我正在成功下载文件和所有内容。我目前的问题是我试图让缓存工作,但我遇到了很多困难。基本上,我不确定从 AFNetworking 2.0 开始我实际上需要在客户端<em>做什么</em>。我还需要设置 NSURlCache 吗?我是否需要在请求操作上设置不同的缓存类型 header ?我认为它可能只是 <em>完全</em> 内置的,但每次代码运行时我都会收到 200 的状态,即使文件没有更改。如果我必须使用 NSUrlCache,我是否必须自己手动保存成功 block 请求操作上的电子标签,然后再将其反馈回来?任何有关如何取得进展的帮助将不胜感激。谢谢大家!</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>AFNetworking 默认使用 NSURLCache 进行缓存。来自 <a href="https://github.com/AFNetworking/AFNetworking/wiki/AFNetworking-FAQ" rel="noreferrer noopener nofollow">the FAQ</a> :</p>

<blockquote>
<p>AFNetworking takes advantage of the caching functionality already provided by <code>NSURLCache</code> and any of its subclasses. So long as your <code>NSURLRequest</code> objects have the correct cache policy, and your server response contains a valid <code>Cache-Control</code> header, responses will be automatically cached for subsequent requests.</p>
</blockquote>

<p>注意这个机制缓存了<code>NSData</code>,所以每次你从这个缓存中检索你需要执行一个有点昂贵的<code>NSData</code>-to-<code>UIImage</code> 操作。这对于快速显示来说性能不够,例如,如果您在 <code>UITableView</code> 或 <code>UICollectionView</code> 中显示图像。</p>

<p>如果是这种情况,请查看 <a href="http://cocoadocs.org/docsets/AFNetworking/2.0.0/Categories/UIImageView+AFNetworking.html" rel="noreferrer noopener nofollow"><code>UIImageView+AFNetworking</code></a> ,它将 <code>UIImage</code> 对象的下载和缓存添加到 <code>UIImageView</code>。对于某些应用程序,您可以只使用开箱即用的实现,但它是非常基本的。您可能想查看这个类的源代码(它不是很长)并将其用作您自己的缓存机制的起点。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - AFNetworking 2.0 上的缓存,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/19905814/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/19905814/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - AFNetworking 2.0 上的缓存