【问题标题】:Where to cache files locally本地缓存文件的位置
【发布时间】:2019-12-04 16:14:58
【问题描述】:

我们的 WPF 桌面应用程序在启动时会从云中的服务器下载一些图像。 由于下载需要一些时间(最多一分钟)并且图像很少更改,因此我想将它们缓存到用户的磁盘上,以便在后续启动时不会加载它们。

将它们放在哪里合适?这些文件可能存在很长一段时间(几年),但如果它们被删除,启动会再次下载它们。

我考虑的选项是将它们放在 TEMP 文件夹(我从 Path.GetTempPath() 获得的路径)或 IsolatedStorage 中。我不知道哪个是最好的,或者是否有更好的选择。

【问题讨论】:

    标签: .net wpf isolatedstorage temp


    【解决方案1】:

    如果我希望图片只能由登录用户访问,我会选择 ApplicationData:

    The directory that serves as a common repository for application-specific data for the current roaming user.

    你可以这样访问它:

    Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "AppName", "Images");
    

    如果我希望这台机器上的所有用户都可以访问图片,我会选择 CommonApplicationData:

    The directory that serves as a common repository for application-specific data that is used by all users.

    你可以这样访问它:

    Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "AppName", "Images");
    

    【讨论】:

    • 如果下载的数据应该可供所有用户使用,请使用Environment.SpecialFolder.CommonApplicationData
    • @Clemens 不是 CommonApplicationData 而是 ApplicationData。这些是不同的
    • 我的意思是 CommonApplicationData:用作所有用户使用的特定于应用程序数据的公共存储库的目录。
    • 我明白了。但是 OP 想要为某个用户缓存数据。因此,当其他用户登录并上传他们的照片时 - 它应该存储在一个单独的文件夹中。使用 CommonApplicationData,该文件夹将在所有有权访问计算机的用户之间共享。如果是 ApplicationData(我建议的文件夹)- 只有当前登录的用户才能访问照片。
    • 想为某个用户缓存数据”——他们到底在哪里说的? “用户的磁盘”不是用户的应用数据文件夹。您应该在答案中提及这两个选项及其差异。
    猜你喜欢
    • 1970-01-01
    • 2013-01-26
    • 2022-08-10
    • 1970-01-01
    • 2022-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-07
    相关资源
    最近更新 更多