LocalCache 和 TempState 应用程序数据文件夹之间有什么区别(如果有相似之处)?

What is the difference (and similarity if any) between LocalCache and TempState application data folders?

UWP 应用使用多个数据文件夹,这些文件夹位于由其包 ID 标识的唯一文件夹下。具体来说,LocalCache和TempState数据文件夹如何比较对比?

在桌面上,Windows 商店应用程序的数据文件存储在文件夹 %USERPROFILE%\AppData\Local\Packages{PackageId} 下,其中 {PackageId} 对应于 Windows Store 应用程序包标识符(Windows Mobile 上的文件夹略有不同但同样独特)。

大约有六个文件夹,每个文件夹都有特定用途,包括用于缓存应用数据的文件夹 LocalCacheTempState用作临时文件夹。

下面是两个数据文件夹的比较和对比。

  • 两者都被排除在 backup/restore 操作之外。相比之下,LocalStateSettingsRoamingState 等应用数据文件夹始终会进行备份。
  • 两者都可以在应用程序中随时删除,方法是使用全部清除[和危险!]方法ApplicationData.Current.ClearAsync(),或有选择地使用ApplicationData.Current.ClearAsync(ApplicationDataLocality.Temporary) 用于 TempState 文件夹,ApplicationData.Current.ClearAsync(ApplicationDataLocality.LocalCache) 用于 LocalCache 文件夹。

  • LocalCache文件夹在删除之前可以依赖,而TempState文件夹以后不能依赖时间,因为它可能会被磁盘清理等外部因素删除,或者在 运行 存储空间不足 space.

  • 上被操作系统删除
  • 如果您想要不需要备份的数据,但想在以后使用它并且只在用完后删除它,那么使用 LocalCache 文件夹。

  • 如果您想要不需要备份但仅当前应用程序会话需要的数据(并将清理工作留给外部工具,例如存储清理),然后使用TempState 文件夹。

  • 您可能希望在退出应用程序时自动清除 TempState 文件夹。同样,监控 LocalCache 文件夹以清除不再需要的数据是需要牢记的重要一点。