2010-05-10 49 views
2

我正在使用WPF框架在C#中编写程序。我需要显示图像,我想缓存它们以避免不断下载它们。使用IE缓存

我可以编码自己的缓存,但是,IE已经有一个缓存系统。我可以找到代码来读取IE缓存中的条目,但是我没有发现任何处理将项目添加到缓存的问题。有没有一种好的方法去做,或者我应该实现一个单独的缓存?

回答

2

根据您下载文件的方式,它们可能已被添加到缓存中。你现在怎么下载它们?

您可以将项目添加到IE缓存。本地你有几个选项:URLDownloadToCacheFile()将在一个很好的“简单”的步骤。 CommitUrlCacheEntry()是这样做的核心方式。我假设你找到的示例使用FindFirst/FindNextUrlCacheEntry()来枚举缓存,所以你应该可以很容易地为CommitUrlCacheEntry()添加你需要的互操作。

但是,作为IE团队的前任成员,我不能推荐您不应该使用Wininet缓存来做任何事情。这是不可靠的,它可以从你的下面清除,它经常被破坏,它可以存储多少东西有一些硬性限制,它受到你不明白的各种规则的约束,并且它将被优化用于IE的用法,不是你的。

说真的,不要这样做。如果你真的需要一个缓存,写你自己的。

2

我建议你实施你自己的。您不能依靠IE缓存保持一致,或不被用户清除,或其他任何东西。除非您真的将IE浏览器嵌入到应用程序的控件中,否则我没有理由使用它。此外,使用自己的缓存可以让您创建一个更适合用途的缓存(例如,如果您需要存储大拇指或额外的元数据或其他任何内容)。

+0

确保您采取措施防止缓存占用大量磁盘空间和/或允许用户清除缓存。 – 2010-05-10 22:14:52