2010-05-10 74 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