【问题标题】:Does the "do not back up" attribute work on data in 'Library/Caches'“不备份”属性是否适用于“库/缓存”中的数据
【发布时间】:2013-05-12 03:42:25
【问题描述】:

Apple 的 data storage guidelines 声明如下:

2) 应存储可再次下载或重新生成的数据 在 /Library/Caches 目录中。

...和(强调我的):

4) 使用“不备份”属性指定应保留在设备上的文件,即使在存储空间不足的情况下。使用此属性 数据可以重新创建,但即使在较低的情况下也需要保留 应用程序正常运行的存储情况或因为 客户希望它在离线使用期间可用。 此属性 对标记的文件起作用,无论它们在哪个目录中, 包括 Documents 目录。 这些文件不会被清除并且 不会包含在用户的 iCloud 或 iTunes 备份中。因为 这些文件确实使用设备上的存储空间,您的应用程序负责 用于定期监控和清除这些文件。

Apple 链接到该主题的更多 detailed discussion 的页面没有提及任何关于该属性所做的任何事情以防止缓存数据被清除。

那么有谁知道“不备份”属性是否真的像“不备份和不删除”一样用于放置在/Library/Caches 中的项目,或者文件是否仍需要存储在应用程序的@987654324 中@目录以确保在设备空间不足时不会删除它们?

【问题讨论】:

  • 你找到答案了吗?我的应用程序有一个可以重新创建的可下载内容,但预计可以离线使用。目前我将它存储在“缓存”目录中,但它在空间不足时被清除:(“不备份”属性真的有帮助吗?它的名字非常令人沮丧。
  • 我已经检查过了,它确实有效!标记为 NSURLIsExcludedFromBackupKey 的文件未从 /Library/Caches 目录中删除磁盘空间不足警告。 (我已经给出了答案)

标签: ios filesystems


【解决方案1】:

我在 iPhone 5 iOS 7.1.1 上做了一个快速测试:

我把一些文件放到“/Library/Caches” (NSCachesDirectory) 并用NSURLIsExcludedFromBackupKey 属性标记它们。然后我用正常的方式把一些更大的文件放到同一个目录下。

然后,我使用相机应用拍摄了一段长视频,发出了磁盘空间不足的警告。 警告后,标有“不备份”的文件并未从缓存中删除,但其他文件已删除!所以,这个属性确实有效,尽管它的名字有两个不同的东西——从备份中排除和保留在空间不足警告时被清除。

【讨论】:

    【解决方案2】:

    对我来说这很清楚,目录结构是我首先要遵循的,正如 Apple 所说的那样。如果您既想保存文件又不想备份,请将其放在 Documents 中,最好放在您标记的文件夹中。

    即使您今天使用缓存观察到某些行为,将来也可能会发生变化。

    【讨论】:

    • 啊,但观察到的行为是我没有的。我试图根据官方文档推断应该观察什么行为。这似乎表明标记为“不备份”的文件“无论它们在哪个目录中都不会被清除”。所以对我来说它仍然像泥巴一样清晰。
    • 对 - 所以它很模糊,你做一个测试,iOS 没有被清除。但在 iOS7 中,它们确实如此。如果您想尝试获得明确的答案,请在 Apple 内部论坛上发帖,但我怀疑您是否会从 Apple 的任何人那里得到这样的答案。 YMMV
    【解决方案3】:

    目前正在研究同样的问题,并假设添加该属性将防止文件在磁盘空间不足的情况下被清除(你知道,因为苹果的文档字面意思是这样)。我想我会用我的发现来更新这个,因为距离接受答案已经有几年了。我有一个可以重新创建的数据库并且不包含用户生成的数据,所以我将它存储在缓存中,但包含一些可能影响应用程序正常运行的数据,所以我不希望它在用完时被清除磁盘空间(当前发生并记录为错误)。我已经尝试将NSURLIsExcludedFromBackupKey 添加到文件本身,并且在清除发生后文件仍然被删除。因此,从 iOS 11.3 开始,它似乎并不能阻止清除。不确定下一步是什么,因为我真的不想为所有用户移动数据库,但这可能是下一步,所以它在 Documents 中是安全的。如果有人有不同的经历,请纠正我。

    【讨论】:

      猜你喜欢
      • 2010-09-06
      • 1970-01-01
      • 1970-01-01
      • 2014-08-03
      • 2011-12-11
      • 1970-01-01
      • 1970-01-01
      • 2011-12-07
      • 1970-01-01
      相关资源
      最近更新 更多