SqlDataSource.CacheExpirationPolicy 屬性
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
取得或設定快取到期行為,當與持續期間搭配使用時,用來描述資料來源控制項所使用的快取行為。
public:
virtual property System::Web::UI::DataSourceCacheExpiry CacheExpirationPolicy { System::Web::UI::DataSourceCacheExpiry get(); void set(System::Web::UI::DataSourceCacheExpiry value); };
public virtual System.Web.UI.DataSourceCacheExpiry CacheExpirationPolicy { get; set; }
member this.CacheExpirationPolicy : System.Web.UI.DataSourceCacheExpiry with get, set
Public Overridable Property CacheExpirationPolicy As DataSourceCacheExpiry
屬性值
其中一個 DataSourceCacheExpiry 值。 預設值為 Absolute 值。
範例
下列程式代碼範例示範如何從 Microsoft SQL Server 中的 Northwind 資料庫擷取數據,並在啟用數據快取的控件中 GridView 顯示數據。 CacheExpirationPolicy由於屬性設定為 Sliding 值,即使CacheDuration值為 20 秒,使用者也不會看到全新的數據。 只有在上次載入頁面之後,頁面上沒有活動超過 20 秒時,才會重新整理快取的數據。
<!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"
CacheExpirationPolicy="Sliding"
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>
<!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"
CacheExpirationPolicy="Sliding"
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 方法會從基礎資料庫擷取數據,然後再次快取數據。
快取的行為取決於 和 CacheExpirationPolicy 設定的組合CacheDuration。 CacheExpirationPolicy如果屬性設定為 Absolute 值,則會SqlDataSource在第一個數據擷取作業上快取數據、將它保留於屬性所CacheDuration指定時間的記憶體中,然後在時間結束時捨棄它。 接著會在下一個作業期間重新整理快取。 CacheExpirationPolicy如果 屬性設定為 Sliding 值,數據源控件會在第一個數據擷取作業上快取數據,但會重設它針對每個後續作業保留快取的時間範圍。 如果上次作業之後Select的值等於CacheDuration值,快取就會過期。
只有在模式中時,控件 SqlDataSource 才能快取 DataSet 數據。 NotSupportedException如果SqlDataSource控件設定為DataReader值,而且也啟用快取,方法就會擲回Select例外狀況。
重要
當您在 Microsoft Windows 驗證下使用用戶端模擬時,數據會在第一位使用者存取數據時快取。 如果另一位使用者要求相同的數據,則會從快取擷取數據。 不會透過對資料庫進行另一個呼叫來擷取數據,以驗證使用者對數據的存取權。 如果您預期有多個使用者存取數據,而且您希望每個擷取到資料庫的安全性組態驗證數據,請勿使用快取。