我正在使用WPF框架在C#中编写程序。我需要显示图像,我想缓存它们以避免不断下载它们。
我可以编写自己的缓存,但IE已经有了缓存系统。我可以找到从IE缓存中读取条目的代码,但是我没有发现任何处理将项目添加到缓存的问题。有没有一个好方法,或者我应该只实现一个单独的缓存?
答案 0 :(得分:2)
我建议你实施自己的。您不能依赖IE缓存保持一致,或者不被用户清除,或其他任何东西。除非您实际上将IE浏览器嵌入到应用程序的控件中,否则我认为没有理由使用它。此外,使用您自己的缓存可以创建一个更适合用途的缓存(例如,如果您需要存储拇指,或额外的元数据,或其他任何东西)。
答案 1 :(得分:2)
根据您下载文件的方式,它们可能已经被添加到缓存中。你现在如何下载它们?
您可以将项目添加到IE缓存中。本地你有几个选择:URLDownloadToCacheFile()将在一个很好的“简单”步骤中完成。 CommitUrlCacheEntry()是实现这一目标的核心方式。我假设您找到的示例使用FindFirst / FindNextUrlCacheEntry()来枚举缓存,因此您应该能够非常轻松地添加CommitUrlCacheEntry()所需的互操作。
但是,作为IE团队的前成员,我不能建议您不要使用Wininet缓存。它不可靠,它可以从你的下面清除,它经常被破坏,它对它可以存储多少东西有一些硬性限制,它受到你不理解的各种规则的约束,并且它将被优化为IE的用法,而不是你的。
说真的,不要这样做。如果你真的需要一个缓存,请自己编写。