ios – SDWebImage没有缓存

ios – SDWebImage没有缓存,第1张

概述我正在使用[SDWeb ImageDownloader.sharedDownloader downloadImageWithURL]下载图像,选项设置为0.我最初没有对它们做任何事情,理解它们将被缓存.但是,当我使用完全相同的函数来稍后显示图像时,该函数再次下载图像,而不是从缓存中获取它(图像缓存类型为0).在这两种情况下,图像的URL都是相同的.我对缓存的理解不正确吗? 享受缓存功能的最简单方法 我正在使用[SDWeb ImageDownloader.sharedDownloader downloadImageWithURL]下载图像,选项设置为0.我最初没有对它们做任何事情,理解它们将被缓存.但是,当我使用完全相同的函数来稍后显示图像时,该函数再次下载图像,而不是从缓存中获取它(图像缓存类型为0).在这两种情况下,图像的URL都是相同的.我对缓存的理解不正确吗?解决方法 享受缓存功能的最简单方法是使用 SDWebImageManager而不是 SDWebImageDownload.SDWebImageManager提供SDImageCache功能,而如果使用SDWebImageDownload,则必须依赖NSURLCache(有限制/问题)或编写自己的缓存代码.

另外(并且隐含在Gustavo的问题中),如果您只是尝试设置UIImageVIEw的图像,实际上更好的是不使用这些类中的任何一个,而是使用UIImageVIEw Webcache类别.它享有SDWebImageManager的所有缓存功能,但也提供其他优点(尤其是重用的UItableVIEwCell和UICollectionVIEwCell对象).

在对另一个用户的评论中,你说你正在高级下载所有图像,“只是为了让它们被缓存,这样当用户确实想要查看图像时,他就不必等待了.”

这是一个很好的伸展目标,但是这种预取(有时称为急切加载,与更常见的延迟加载相反)有几个含义:

>除非您确信用户确实需要所有图像,否则这是对他们的移动设备的蜂窝数据计划的积极使用,所以也许您应该只在WiFi上执行此 *** 作(可以通过Reachability确定). Apple甚至拒绝使用太多蜂窝带宽的应用程序.
>在内存方面,应用程序将比必要的更具侵略性(导致更多暂停的应用程序被终止,这不会影响您的应用程序的用户体验,但Apple要求我们所有人都是好公民,不要使用比我们需要更多的RAM ).同样,如果用户需要所有图像,那么这是一件好事,但如果没有,那么应该真正减少内存消耗,而不是使用当前会话可能不需要的东西加载缓存.另请注意,下载一堆可能需要下载的内容,但仅作为预防措施,也会产生(适度的)电池影响.
>如果您对后台数据做了大量请求,请确保您没有用完所有有限的网络连接(您只有五个),并使用大量请求对系统进行积压.好处是UI UIImageVIEw类别自然有利于当前的UI(从根本上说,是一种延迟加载机制).但是,假设有100个图像,用户触发应用程序并向下滚动到列表的底部.你真的想要#90的请求(在屏幕上并且用户正在等待)等待#1-89完成吗?

请参阅WWDC 2012视频Asynchronous Design Patterns with Blocks,GCD,and XPC,第7节“独立控制和数据流”,大约48分钟进入视频,以讨论这是如何产生问题的.

如果不出意外,我会确保您使用网络链接调节器(MacOS硬件IO工具的一部分或设备上的设置>常规>开发人员)测试应用程序.因此,打开网络链接调节器,删除并重新安装应用程序(清空持久性存储缓存),然后使用此慢速连接启动应用程序,尝试在图像加载过程中导航.一个简单的“让我们开始预取所有内容”可能无法在您真正想要的慢速网络上提供当前UI的必要优先级.

所有这些都说,你可能已经考虑过所有这些含义,如果是这样的话,我为那些显而易见的事情道歉.只是在实施所有图像的积极预取之前必须要小心.

总结

以上是内存溢出为你收集整理的ios – SDWebImage没有缓存全部内容,希望文章能够帮你解决ios – SDWebImage没有缓存所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1057242.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存