SqlDataSource.CacheDuration 屬性
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
取得或設定資料來源控制項快取 Select(DataSourceSelectArguments) 方法所擷取之資料的時間長度 (以秒為單位)。
public:
virtual property int CacheDuration { int get(); void set(int value); };
[System.ComponentModel.TypeConverter(typeof(System.Web.UI.DataSourceCacheDurationConverter))]
public virtual int CacheDuration { get; set; }
[<System.ComponentModel.TypeConverter(typeof(System.Web.UI.DataSourceCacheDurationConverter))>]
member this.CacheDuration : int with get, set
Public Overridable Property CacheDuration As Integer
屬性值
SqlDataSource 快取 Select(DataSourceSelectArguments) 作業結果的秒數。 預設值是 0。 值不能為負。
- 屬性
範例
下列程式代碼範例示範如何從 Microsoft SQL Server 中的 Northwind 資料庫擷取數據,並在啟用數據快取的控件中 GridView 顯示數據。 CacheDuration會設定為 20 秒,因為 CacheExpirationPolicy 屬性預設會設定為 Absolute 值,所以此頁面的使用者每隔 20 秒就會看到新的數據。
<%@ Page language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>ASP.NET Example</title>
</head>
<body>
<form id="form1" runat="server">
<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>
<asp:GridView
id="GridView1"
runat="server"
AutoGenerateColumns="False"
DataSourceID="SqlDataSource1">
<columns>
<asp:BoundField HeaderText="First Name" DataField="FirstName" />
<asp:BoundField HeaderText="Last Name" DataField="LastName" />
<asp:BoundField HeaderText="Title" DataField="Title" />
</columns>
</asp:GridView>
</form>
</body>
</html>
<%@ Page language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>ASP.NET Example</title>
</head>
<body>
<form id="form1" runat="server">
<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>
<asp:GridView
id="GridView1"
runat="server"
AutoGenerateColumns="False"
DataSourceID="SqlDataSource1">
<columns>
<asp:BoundField HeaderText="First Name" DataField="FirstName" />
<asp:BoundField HeaderText="Last Name" DataField="LastName" />
<asp:BoundField HeaderText="Title" DataField="Title" />
</columns>
</asp:GridView>
</form>
</body>
</html>
備註
控件 SqlDataSource 支持數據快取。 快取數據時, Select 方法會從快取擷取數據,而不是從基礎資料庫擷取數據。 當快取過期時, Select 方法會從基礎資料庫擷取數據,然後再次快取數據。
當 屬性設定為 true
且 CacheDuration 屬性設定為大於 0 的值時EnableCaching,控件SqlDataSource會自動快取數據,這表示快取在捨棄快取專案之前儲存數據的秒數。 值為 0 表示無限長快取。
快取的行為取決於持續時間和 CacheExpirationPolicy 屬性的組合。 CacheExpirationPolicy如果屬性設定為Absolute值,則SqlDataSource快取第一個數據擷取作業上的數據,最多會保留於屬性所CacheDuration指定的時間量記憶體中。 如果需要記憶體,數據可能會在持續時間之前釋出。 接著會在下一個作業期間重新整理快取。 CacheExpirationPolicy如果 屬性設定為 Sliding 值,數據源控件會在第一個數據擷取作業上快取數據,但會重設它針對每個後續作業保留快取的時間範圍。 如果上次作業之後Select的值等於CacheDuration值,快取就會過期。
控件 SqlDataSource 只能在處於模式時 DataSet 快取數據。 NotSupportedException如果SqlDataSource控件設定為DataReader值,而且也啟用快取,方法就會擲回Select例外狀況。
重要
當您在 Microsoft Windows 驗證下使用用戶端模擬時,數據會在第一位使用者存取數據時快取。 如果另一位使用者要求相同的數據,則會從快取擷取數據。 不會透過對資料庫進行另一個呼叫來擷取數據,以驗證使用者對數據的存取權。 如果您預期有多個使用者存取數據,而且您希望每個擷取到資料庫的安全性組態驗證數據,請勿使用快取。