RNCachingURLProtocol 是 HTTP 协议的一个简单垫片(听起来可能有点可怕,但实际上并不那么可怕)。每次下载 URL 时,响应都会被缓存在磁盘上。每次请求 URL 时,如果在线则正常处理。如果离线,则检索缓存的版本。
RNCachingURLProtocol 的主要目的是展示如何实现这一点。当前实现非常简单。特别是,它不担心清理缓存。假设您只是缓存了一些简单的东西,比如您的“最新新闻”页面(这是我解决的问题)。它缓存所有 HTTP 流量,因此如果不进行一些修改,不适合大量 HTTP 连接的应用(请参阅 MKNetworkKit)。但如果你需要缓存一些 URL 而不是其他 URL,实现起来很容易。
您还应查看 AFCache,它是一个更强大的缓存引擎,目前正在集成 RNCachingURLProtocol 的想法。
要构建,您需要 Apple 的 Reachability 代码(包含在内)。这要求您链接到 SystemConfiguration.framework
。
在某些早期程序点(通常为 application:didFinishLaunchingWithOptions:
),调用以下代码
[NSURLProtocol registerClass:[RNCachingURLProtocol class]];;
没有步骤 3。
有关更多详情,请参阅 为 UIWebView (和 NSURLProtocol) 添加离线缓存(Drop-in offline caching)。
请参阅 CachedWebView 项目以查看用法示例。
此代码在 MIT 许可证下授权
本授权协议授予任何获取此软件及其相关文档文件(以下简称“软件”)副本的任何人不受限制地使用该软件的权利,包括但不限于以下权利:使用、复制、修改、合并、发布、分发、再许可和/或销售该软件的副本,并允许将软件提供给他人使用,前提是满足以下条件
上述版权声明和本许可协议应包含在软件的副本或主要部分中。
本软件按“原样”提供,不提供任何形式的保修,包括但不限于对适销性、特定用途适用性和非侵权的担保。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任承担责任,不论是在合同行为、侵权行为或其他情况下,这些责任是源自、从属于或与该软件或对该软件的使用或其他方式有关的。