2010-11-02 82 views
4

UPDATE:我也發現ncache這似乎很有用,也來到know,stackoverflow使用redis進行緩存。我也遇到過memcached,似乎是更好的選擇之一。什麼時候以及如何去執行緩存在asp.net mvc?

我發現this但我需要知道什麼是我可以緩存我的一些LINQ查詢並有效地使用它們的方式。我發現在asp.net中有Output cache mvc還有其他的方法可以做緩存嗎?

我是一個新手,從來沒有做過緩存之前,所以我會很感激,如果任何人都可以在這裏指出我在正確的方向嗎?主要我想要回答什麼時候需要緩存以及如何在asp.net mvc中進行緩存?

+0

這一切都取決於你有什麼樣的應用程序。它主要是隻讀數據還是會有很多編輯進行?它運行在一臺服務器上還是分佈在一個農場上?您是否確定了應用程序的性能瓶頸? – marcind 2010-11-02 23:04:39

+0

是的,我有一些查詢,我發現是瓶頸使用探查器..所以我試圖緩存他們... – Vishal 2010-11-02 23:06:33

+0

除了緩存有幾件事情要考慮:1)是否有任何方式查詢可能是優化(例如,這是一個N + 1場景?)和2)你有索引/集羣在適當的表和密鑰? http://ayende.com/Blog/archive/2008/12/01/solving-the-select-n1-problem.aspx&http://msdn.microsoft.com/en-us/library/aa933131%28SQL。 80%29.aspx – Ryan 2010-11-03 04:46:20

回答

2

根據我的經驗,應用程序級緩存很少是解決性能問題的正確方法,它幾乎總是會導致比解決問題更多的問題。

你踏上任何緩存之前,您應該首先:

(我)分析您的應用程序,這讓看到,如果你可以直接解決這些問題太寬(如查詢模式(即AREN獲取列的查詢不顯示)或太深(例如,獲取比您顯示的更多的行),太頻繁(延遲加載可能導致比您需要的更多的往返行程),太昂貴(糟糕的表設計可能意味着更多的連接比您需要的),或表格本身可能沒有正確編制索引;

(ii)全面瞭解您的網站和用戶體驗,以瞭解如何改進感知性能(例如,設置適當的瀏覽器級別el在靜態內容上緩存緩存標頭)。使用AJAX可能和像jQGrid這樣的分頁網格視圖可能會消除許多數據庫訪問,而用戶通過記錄進行分頁是因爲頁面內容的其餘部分沒有改變。

當你用盡修復真正的問題後,你可能會準備考慮緩存。

但在此之前,請做一個簡單的計算:升級後的服務器成本與開發和測試時間相比將花費多少時間來實現緩存和追蹤奇怪的陳舊緩存問題?有時只是升級更便宜...

相關問題