2011-12-14 66 views
0

該場景是一個ASPX頁面,其中一個GridView顯示來自SqlDataSource的數據,該數據配置爲從基於次優查詢(我沒有時間在當前時刻修復)的數據庫視圖中選擇行。我應該使用哪種ASP.NET緩存技術來緩存視圖查詢的結果?

我打開了我關於緩存的100頁關於緩存的100頁章節的大型ASP.NET書籍,並且意識到它非常複雜,所以我只是想知道是否有人可以想象這種情況並專門告訴我他們可能用於解決問題的技術(除了使查詢更快)。

此外,GridView具有可排序的列幷包含在UpdatePanel中。

在此先感謝。

回答

3

這並不一定是複雜的,也可能是因爲這樣的簡單:

public DataSet GetMyViewData() 
{ 
    var results = HttpContext.Current.Cache["myViewResults"] as DataSet; 

    if(results == null) 
    { 
     results = GetMyQueryResults(); 
     HttpContext.Current.Cache["myViewResults"] = results; 
    } 

    return results; 
} 

當然,這取決於數據有多大,你如何保鮮需要,等等。等等,但是從緩存中添加和獲取是很容易的。此外,如果您正在談論WebForms,則SqlDataSource控件將公開EnableCachingCacheDuration策略,如果您只需要緩存Select語句的結果。您只需在控件上設置屬性,如下所示。

從MSDN:

<asp:SqlDataSource 
       id="SqlDataSource1" 
       runat="server" 
       DataSourceMode="DataSet" 
       ConnectionString="<%$ ConnectionStrings:MyNorthwind%>" 
       EnableCaching="True" 
       CacheDuration="20" 
       SelectCommand="SELECT EmployeeID,FirstName,LastName,Title FROM Employees"> 
      </asp:SqlDataSource> 
+0

無效,我以爲只是設置爲空? – 2011-12-15 01:13:20