您可以幫我決定以下哪種情況最好。ASP.NET輸出緩存vs ASP.NET對象緩存
我有3個用戶控件。 每個控件都需要根據SQL Server查詢的結果生成內容,例如,用戶控件#1使用查詢的輸出填充gridview。
我想利用緩存,以減少往返我的SQL Server數據庫。 我想出了以下兩個解決方案,並想知道哪一個最好。
場景#1:
將所有3個用戶控件的查詢在單個SQL Server存儲過程(分批),執行存儲過程包含頁內的用戶控制之外,然後提供與每個用戶的控制它的查詢輸出。 通過將所有3個查詢放在單個存儲過程中,可以減少數據庫的往返次數。
通過緩存存儲過程的輸出,將在這種情況下進行緩存。因此,存儲過程的輸出將每次從內存中獲取以向每個用戶控件提供其輸出,之後每個用戶控件將生成其輸出。 大約188個不同版本的查詢將被ASP.NET對象緩存緩存。
方案#2:
查詢在SQL Server每個單獨的用戶控件的內部數據庫,然後生成各個用戶控件的與查詢的輸出結果,每個一個獲得的。 這意味着每個用戶控件將單獨調用SQL Server數據庫。 通過緩存每個用戶控件的輸出可以緩存這種情況,因此用戶控件不必每次都生成其輸出,並且可以直接從內存中獲取其輸出。 在這種情況下,我必須緩存大約188個不同版本的一個或多個用戶控件。
在此先感謝
兩個簡單的問題:1)三個數據庫調用有多少重疊?這些控件是否共享任何常用數據?,2)控件是否有可能推遲迴調數據庫,或者是所有三個控件*總是*加載? – GrayWizardx 2012-01-31 23:21:28