gpt4 book ai didi

cocoa - 如何共享 Safari 的 NSURLCache 存储?

转载 作者:行者123 更新时间:2023-12-03 18:05:54 27 4
gpt4 key购买 nike

背景

  • 我正在构建一个链接最近的应用程序你们一起访问过的网页。

  • 为此,我需要获取 HTML使用 Cocoa 获取最近的 URL。

  • 现在,我正在使用隐形WebView 来做到这一点。

  • 据我了解,如果 URL 不是在我的应用程序的缓存中,这是访问网络服务器。

我想要什么

我抓取的 URL 很可能已经被 Safari 缓存,因为该页面已经被访问过。

我希望我的应用首先检查 Safari 的缓存中的 URL。如果存在,它应该只使用这些数据。如果没有,它应该访问网络服务器并将页面存储在我的应用程序的缓存中。

我真的不想使用 sqlite3 从 Safari 解析 cache.db 文件 - 我不知道这种格式是否会保持不变。我追求的是更简单、更高层次的东西。

我尝试过的

我知道你可以使用方法 initWithMemoryCapacity:diskCapacity:diskPath: 设置你自己的 NSURLCache 但我不想尝试将其指向 Safari 缓存,以防它搞砸 Safari写入它。

有没有一种简单、高级的方法来共享 Safari 缓存?

更新

啊哈。我刚刚意识到可能有一种方法可以做到这一点,而我一直缺少这种方法。

我可以使用 initWithMemoryCapacity:diskCapacity:diskPath: 创建一个 NSURLCache 的新实例,将其指向 Safari 缓存,然后指定 NSURLRequestReturnCacheDataDontLoad 的缓存策略 用于加载页面时的 URL 请求。

当失败时,我可以尝试正常加载页面。我会尝试一下,并在了解更多信息后更新问题。

最佳答案

说实话,你就是做不到这一点。

首先,我非常确定 -[NSURLCache initWithMemoryCapacity:diskCapacity:diskPath:] 不会按您的预期工作。相反,它会清除旧的缓存文件以创建自己的缓存文件; Safari 可能会非常令人不安。

其次,NSURLCache 是一个复合缓存。也就是说,它首先将数据缓存在内存中,然后在某个时候将其移出到磁盘。因此,即使您可以正确访问 Safari 的缓存文件(您不能),您也只能访问较旧的缓存数据;不是最新的。

关于cocoa - 如何共享 Safari 的 NSURLCache 存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2416913/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com