背景
我正在构建一个将您最近访问过的网页链接在一起的应用程序。
为此,我需要使用 Cocoa 获取最近 URL 的 HTML。
现在,我正在使用不可见的 WebView 来执行此操作。
据我了解,如果 URL 不在我的应用程序的缓存中,那么这就是在访问 Web 服务器。
我想要的是
我抓取的 URL 很有可能已经被 Safari 缓存,因为该页面已经被访问过。
我希望我的应用程序首先检查 Safari 的缓存中的 URL。如果它在那里,它应该只使用这些数据。如果没有,它应该访问 Web 服务器并将页面存储在我的应用程序的缓存中。
我真的不想使用 sqlite3 从 Safari 解析 cache.db 文件——我不知道这种格式是否会保持不变。我追求更简单、更高层次的东西。
我试过的
我知道您可以使用该方法设置自己的 NSURLCache ,initWithMemoryCapacity:diskCapacity:diskPath:
但我不想尝试将其指向 Safari 缓存,以防它通过写入来破坏 Safari。
是否有一种简单、高级的方式来共享 Safari 缓存?
更新
啊哈。我刚刚意识到可能有一种方法可以做到这一点,我一直在想念。
我可以创建一个NSURLCache
with的新实例,将其initWithMemoryCapacity:diskCapacity:diskPath:
指向 Safari 缓存,然后NSURLRequestReturnCacheDataDontLoad
在加载页面时为 URL 请求指定缓存策略。
当这失败时,我可以尝试正常加载页面。当我知道更多时,我会尝试这个并更新问题。