共用方式為


SqlDataSource.CacheDuration 屬性

定義

取得或設定資料來源控制項快取 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 方法會從基礎資料庫擷取數據,然後再次快取數據。

當 屬性設定為 trueCacheDuration 屬性設定為大於 0 的值時EnableCaching,控件SqlDataSource會自動快取數據,這表示快取在捨棄快取專案之前儲存數據的秒數。 值為 0 表示無限長快取。

快取的行為取決於持續時間和 CacheExpirationPolicy 屬性的組合。 CacheExpirationPolicy如果屬性設定為Absolute值,則SqlDataSource快取第一個數據擷取作業上的數據,最多會保留於屬性所CacheDuration指定的時間量記憶體中。 如果需要記憶體,數據可能會在持續時間之前釋出。 接著會在下一個作業期間重新整理快取。 CacheExpirationPolicy如果 屬性設定為 Sliding 值,數據源控件會在第一個數據擷取作業上快取數據,但會重設它針對每個後續作業保留快取的時間範圍。 如果上次作業之後Select的值等於CacheDuration值,快取就會過期。

控件 SqlDataSource 只能在處於模式時 DataSet 快取數據。 NotSupportedException如果SqlDataSource控件設定為DataReader值,而且也啟用快取,方法就會擲回Select例外狀況。

重要

當您在 Microsoft Windows 驗證下使用用戶端模擬時,數據會在第一位使用者存取數據時快取。 如果另一位使用者要求相同的數據,則會從快取擷取數據。 不會透過對資料庫進行另一個呼叫來擷取數據,以驗證使用者對數據的存取權。 如果您預期有多個使用者存取數據,而且您希望每個擷取到資料庫的安全性組態驗證數據,請勿使用快取。

適用於

另請參閱