簡體   English   中英

Asp.net - 用於存儲字典的緩存與靜態變量

[英]Asp.net - Caching vs Static Variable for storing a Dictionary

我正在建立一個包含許多部門和類別的網上商店。 它們存儲在我們的數據庫中並經常訪問。

我們正在使用URL重寫,因此幾乎商店中的每個請求都會生成查找。 我們還需要經常迭代數據以生成主存儲和部門頁面的菜單。

這些信息不會經常更改,因此我認為我應該將數據庫加載到字典中以加速信息檢索。

我知道標准做法是將數據加載到應用程序緩存中,但是我假設在緩存期間出現了某種級別的序列化,對於大型數據結構,我認為開銷會很大。

我對此的沖動是將字典放在一個相關類中的靜態變量中。 但是我想在此獲得一些輸入輸入。 我認為這種方法會更快嗎? 這是一種可怕的做法嗎? 有沒有更好的方法讓我失蹤?

我似乎無法找到關於此的更多信息,我真的很感激您可以分享的任何信息。 謝謝!

Application和Cache集合不會序列化您傳遞給它們的對象,它們存儲實際的引用。 無論對象有多大,從Cache中檢索對象都不是一項昂貴的操作。 始終堅持使用Cache對象,除非你有充分的理由不這樣做,這只是一個很好的做法。

唯一值得一提的是確保您考慮對此集合進行多線程訪問。 如果你沒有正確鎖定,你很快就會遇到一些嚴重的問題

好吧,如果需要這樣做,我認為重寫代碼以使用靜態字段而不是應用程序緩存是不是很重要。 我個人首先使用緩存。 沒有必要進行過早優化,您是否測量過性能? 它可能與應用程序緩存對象一樣正常。 也許它甚至適用於db查詢? :)

所以,我的答案是 - 使用緩存並查看它是如何工作的。

memcached是你的朋友! (但如果你沒有擴展,可能會有點矯枉過正)

你知道你的字典在應用程序緩存中會有多大嗎? 我很想推薦這是一個很好的第一選擇。

恕我直言,一般來說,如果你對底層對象的更新有控制權,你應該使用靜態存儲。 否則,如果您依賴第三方API進行數據檢索,請使用緩存技術。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM