2010-11-19 61 views
0

我有一個存儲庫,從數據庫,有時一個緩存拉。httpcache問題

爲了實現這個,我創建了一個界面ICacheWrapper,它可以讓repo使用HttpRuntime.Cache,AppFabric等等。在ICacheWrapper混凝土類通常採取緩存在其構造像這樣:新HttpCacheWrapper(HttpRuntime.Cache)

回購的構造函數需要一個參考緩存包裝,像這樣:

myRepo = new Repo(new HttpCacheWrapper(HttpRuntime.Cache)); 

如果我創建2回購,緩存是否被深度複製?我不會想,但是我們的表現問題表明不是。我在這裏錯過了什麼嗎?

感謝您的幫助!

回答

0

你在看什麼? HttpCacheWrapper如何處理HttpRuntime.Cache?

我懷疑你所看到的是一個緩存策略,該策略對於緩存事物的速率持有太長的時間。正如Raymond Chen所說,「不正確的高速緩存策略與內存泄漏難以區分」。

我將這種隔離的方法是嘗試使用您擁有的策略對一個回購進行測試。看看你的表現問題是否出現。

如果不是,則繼續創建第二個回購並密切監視內存使用情況。

+1

更多研究/重構的結果:它看起來像是從緩存中取出的東西列表是從單個緩存中提供的,這很好。該列表正在被過濾以適應所要求的網絡表單的需求。然後過濾的列表綁定到webform ui。似乎正在發生的事情是,除了緩存列表之​​外,正在創建已篩選列表,並且都沒有及時進行GC編輯。 – 2010-11-19 22:33:03