【问题标题】:On iOS where is the NSURLCache cache stored if diskPath:nil?在 iOS 上,如果 diskPath:nil,NSURLCache 缓存存储在哪里?
【发布时间】:2022-01-08 01:31:05
【问题描述】:

我遇到过如下代码:

NSURLCache *URLCache = 
    [[NSURLCache alloc] initWithMemoryCapacity:1024 * 1024 
                                  diskCapacity:1024 * 1024 * 5 
                                      diskPath:nil];

问题是当 diskPath 被传递为零时,我无法找到预期的行为。 NSURLCache docs 没有明确描述这种情况,我自己的测试也无法弄清楚。

缓存存储在哪里?还是上面的代码是一个错误?

谢谢。

【问题讨论】:

    标签: ios nsurlcache


    【解决方案1】:

    我今天有一些空闲时间做一些测试并找到了答案。没什么令人兴奋的,但如果你好奇的话:

    默认情况下,iOS 将使用一个名为 Cache.db 的数据库,并且正如@qegal 所提到的,它将存储在默认位置下。

    【讨论】:

      【解决方案2】:

      来自您的链接文档:

      在 iOS 中,path 是应用程序默认缓存目录的子目录的名称,用于存储磁盘缓存(如果子目录不存在,则创建该子目录)。

      我的最佳猜测是,如果path 为 nil(意味着您没有指定子目录),缓存将仅存储在默认缓存目录中(而不是子目录中)。我现在无法测试它,因为我遇到了一些计算机问题。我还猜测它会存储在默认缓存目录中,因为我确信您会在运行时或编写代码时收到某种警告或错误。我知道我是否写过这样的东西:

      [array writeToFile: nil atomically:NO];
      

      我会收到一个错误,因为我没有指定应该写入文件的路径。

      希望这会有所帮助!

      【讨论】:

      • 您能否分享一下您如何确定缓存是否存储在默认目录中?我可以试试。
      • @jlmendezbonini 您的意思是如何验证缓存是否已存储?
      • 是的。我可能会遗漏一些关于如何做到这一点的明显内容。
      • @jlmendezbonini - 好吧,我对缓存不是很熟悉,但我很确定它们会存储图像和钥匙串等 Web 文档,所以你不能只创建 diskPath:nil 然后去到您要从中获取缓存的网页。例如,我认为 SO 在我的计算机上存储了一个钥匙串缓存,因此我不必每次重新加载页面时都登录。尝试设置diskPath:nil,然后登录到 SO。然后关闭页面并退出 Safari。然后再次打开备份,进入SO,如果你已经登录,那么缓存就存储成功了。
      【解决方案3】:

      在 iOS 8.2 下,Cache.db 文件存储在:

      (App Folder)/Library/Caches/com.mycompany.appname/Cache.db
      

      com.mycompany.appname 是您的捆绑包 ID

      【讨论】:

        【解决方案4】:

        如果diskPath == xxxx,则Cache.db文件存储在:

        (App Folder)/Library/Caches/com.mycompany.appname/xxxx/Cache.db
        

        【讨论】:

          【解决方案5】:

          您可以在以下路径找到模拟器的缓存文件:

          ~/Library/Developer/CoreSimulator/Devices/UDID/data/Containers/Data/Application/UDID/Library/Caches/BUNDLE_IDENTIFIER

          文件夹必须如下所示:

          • Cache.db
          • Cache.db-wal(在此处查看缓存和存储的值)
          • Cache.db-shm

          根据我的经验,我必须从设备文件夹中删除所有以前的设备,如果您找不到bundleIdentifier,请尝试删除所有设备文件夹并再次运行应用程序,这样将在该空文件夹上创建新文件夹并你可以从那里查看缓存的文件

          【讨论】:

            猜你喜欢
            • 2022-08-18
            • 1970-01-01
            • 2015-04-28
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-06-13
            • 1970-01-01
            • 2019-07-24
            相关资源
            最近更新 更多