SDURLCache:为iPhone/iPad应用提供本地磁盘缓存的URLCache子类

屏幕快照 2016-03-23 上午1.05.21

在 iPhone 操作系统中,苹果支持自动清除未知原因的磁盘缓存。有人认为这样能够延长闪存硬盘的寿命,也有人认为这样能够节省磁盘存储空间。在 NSURLCacheStoragePolicy(缓存策略)的官方解释中,NSURLCacheStorageAllowed 始终被视为 NSURLCacheStorageAllowedInMemoryOnly ,也就是说 iOS 中只有内存缓存,没有磁盘缓存。而且我们无法做出任何改变,因为 Xcode 平台上的代码已经确切存在。不管是什么原因导致苹果取消了这一功能,你都可能对应用程序中的 HTTP 请求磁盘缓存感兴趣,而 SDURLCache 可以帮助你在 iPhone 操作系统中实现这一功能。

使用 SDURLCache 时,你只需要创建一个实例对象来代替系统的 NSURLCache 类实例,然后就可以立即在你的应用程序中实现 HTTP 请求磁盘缓存功能。代码示例:

为了保护缓存驱动器,SDURLCache 默认如果缓存延迟低于5分钟,就不会在磁盘上进行缓存。你可以设置 minCacheInterval 属性来改变这一行为。

如果在一个定期维护线程中,磁盘存储空间达到峰值,缓存就会自动清除。所有的磁盘写入操作都在一个独立的线程中执行,因此主循环不会受到影响。

使用 NSURLRequest 类的 cachePolicy 属性可以控制缓存行为。如果不想将一个响应缓存到磁盘而是仍然缓存到内存,你可以通过实现 NSURLConnection 中的 connection:willCacheResponse: 代理方法,并设置 NSURLCachedResponse 类的 storagePolicy 属性为 NSURLCacheStorageAllowedInMemoryOnly 来进行修改。代码示例:

开源地址:https://github.com/steipete/SDURLCache

打赏支持我整理更多优质资源,谢谢!

打赏编辑

打赏支持我整理更多优质资源,谢谢!

任选一种支付方式

2 2 收藏

资源整理者简介:魏川程



直接登录

推荐关注

按分类快速查找

关于资源导航
  • 伯乐在线资源导航收录优秀的工具资源。内容覆盖开发、设计、产品和管理等IT互联网行业相关的领域。目前已经收录 1440 项工具资源。
    推送伯乐头条热点内容微信号:jobbole 分享干货的技术类微信号:iProgrammer