2011-09-29 14 views
3

我有一個電子商務網站要構建並給定我們必須處理的請求的頻率和數量,最好將緩存合併到我們的從開始本身的代碼庫。我讀了.net 4的system.runtime.cache和system.web.cache。這些類在應用程序級別提供緩存。還可以使用outputcacheprovider接口實現我們自己的定製提供程序。使用.net緩存提供程序類在數據庫中的網絡服務器上緩存數據庫查詢結果

現在我想在web服務器本身有一個小型數據庫服務器會更好,它將緩存頻繁發生的SQL查詢的結果,這些查詢可能是服務器到網頁,並將節省我往返實際db服務器和數據庫訪問。

我經歷了很多博客,但我沒有找到任何與此直接相關的東西。 現在我有幾個問題: 1.在webserver上使用小型dbserver來處理頻繁查詢是否好? 2.是否可以使用outputcacheprovider實現這種緩存?

回答

5

除了在您的Web服務器上添加負載之外,它不會真的做很多事情。唯一可能產生變化的是,如果網絡服務器之間的網絡存在足夠的延遲,以便使其值得工作。

緩存的重點在於你將數據保存在快速介質(即內存)中的已處理表單中。

你最好看看像appfabric或memcache這樣的東西來提供緩存而不是數據庫。

另外,還要找出緩存&輸出緩存之間的區別。緩存將數據保存在內存中,供應用程序根據需要使用。 OutputCaching正在爲頁面存儲生成的輸出,這意味着將來的請求會獲得緩存版本&,您不必每次都生成頁面。

+0

此外,你必須小心你正在緩存和在哪裏。如果您在asp.net緩存中插入任何數據,那麼您的應用程序域中的每個線程都可以訪問它。如果您在Asp.net會話中插入數據,則只有當前用戶的上下文才能訪問該數據。因此,如果需要,我會在asp.net緩存中插入國家/地區列表和狀態列表等內容,並在asp.net會話中執行查詢結果或詳細信息數據。 – Nabheet

+0

@NabheetSandhu你能否給我提供一篇鏈接,介紹如何使用會話緩存和asp.net緩存以及它們之間的區別。正如我所說我還沒有開始編碼,我只是想在我跳入之前敲定一切。謝謝。 – intoTHEwild

+0

「......只有當網絡上有足夠的滯後時纔會有所作爲......」不一定。數據庫結果緩存(也稱爲SQL依賴關係通知)還可以幫助減少數據庫服務器的調用次數(往返),因此SQL查詢不必編譯和運行,從而減少了兩臺服務器上的CPU和I/O負載(web和SQL)以及網絡流量/瓶頸以及每個請求重建對象圖。 –