Mattress:iOS Web离线缓存

 ,  , 

屏幕快照 2016-03-24 下午12.16.13

Mattress 是一个能够将整个网页缓存到本地磁盘的 Swift 框架,有别于标准的 NSURLCache ,但又能与其相互协作。Mattress 能够预缓存网页内容,不仅可以提高加载速度,还可以实现网页内容的离线浏览,非常有用。

要求

  • iOS 7.0+(iOS 8 要求整合为一个嵌入式框架)

安装

Mattress 包含了一个封装好的 CommonCrypto ,以便能够容易的在 Swift 工程中使用。你需要确保将 Mattress 和 CommonCrypto 两个框架都添加到工程中。

如果你还没有使用 Carthage ,你需要通过 Homebrew 来安装:

安装完成之后,在你的 Cartfile 文件中添加代码:

然后,你需要使用 Carthage 创建工程,并将 Mattress 和 CommonCrypto 两个框架手动集成到工程中:

如果你还没有使用 CocoaPods ,你需要通过 RubyGems 来安装:

安装完成之后,在你的 Podfile 文件中添加代码:

  • 手动安装

1、打开 Mattress 文件夹,然后将 Mattress.xcodeproj 拖动到你的工程中的文件导航栏。注意:Mattress 工程必须被添加到 TARGET 工程下,否则你将无法把它添加到工程依赖库中。

2、确保 Mattress 工程的 Deployment Target 与应用程序的 Deployment Target 相匹配。

3、在 TARGETS —> Build Phases —> Target Dependencies 下添加 Mattress.framework 。

4、点击面板左上角的 + 按钮,选择 New Copy Files Phase 新建,并重命名为 Copy Frameworks 。将 Destination 设置为 Frameworks ,然后添加 Mattress.framework 和 CommonCrypto.framework 。

使用

你应该在 application:didFinishLaunching: 方法中创建一个 URLCache 类实例,并将其设置为应用程序的共享缓存:

只需要调用 URLCache 中的 diskCacheURL:loadedHandler: 方法就可以在 Mattress 磁盘中缓存网页:

一旦缓存完成,你就可以简单的在 UIWebView 上加载 Mattress 缓存的网页,像变魔术一样。

示例

请按照以下步骤运行示例工程:

 

  1. 打开 Mattress.xcworkspace
  2. 运行 MattressExample 项目
  3. 点击 Cache Page
  4. 等待缓存完成的消息
  5. 断开网络连接
  6. 点击 Load Page ,网页会通过 Mattress 加载出来

 

注意事项

Mattress 不能与 WKWebView 共同工作。目前 WKWebView 通过自身的内部系统实现缓存,而且没有与 NSURLProtocol 进行恰当的整合,导致 Mattress 无法捕获网络请求。

由于 Mattress 当前的架构和 WebViews 的使用,大部分缓存任务必须在主线程中执行。当在后台缓存网页时,例如后台读取,并不会出现任何问题。但是当你的应用程序处于前台活跃状态时,这个问题还是值得注意的。虽然我们幸运的在使用中将这种状态下的性能影响降到了最低,但你在使用中可能还是会遇到一些问题。

开源协议

Mattress 在 MIT开源协议 下可以使用,也就是说,只要在项目副本中包含了版权声明和许可声明,用户就可以使用 Mattress 做任何想做的事情,而 Mattress 也无需承担任何责任。可以通过查看LICENSE文件来获取更多相关信息。

开源地址:https://github.com/buzzfeed/mattress

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

打赏编辑

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

任选一种支付方式

2 1 收藏

资源整理者简介:魏川程



直接登录

推荐关注

按分类快速查找

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