SqlDataSource.CacheDuration SqlDataSource.CacheDuration SqlDataSource.CacheDuration SqlDataSource.CacheDuration Property

定义

获取或设置以秒为单位的一段时间,它是数据源控件缓存 Select(DataSourceSelectArguments) 方法所检索到的数据的时间。Gets or sets the length of time, in seconds, that the data source control caches data that is retrieved by the Select(DataSourceSelectArguments) method.

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; }
member this.CacheDuration : int with get, set
Public Overridable Property CacheDuration As Integer

属性值

SqlDataSource 缓存 Select(DataSourceSelectArguments) 操作结果的秒数。The number of seconds that the SqlDataSource caches the results of a Select(DataSourceSelectArguments) operation. 默认值为 0。The default is 0. 该值不能为负数。The value cannot be negative.

示例

下面的代码示例演示了如何在 Microsoft SQL Server 中从 Northwind 数据库检索数据, 并在GridView控件中显示数据缓存。The following code example demonstrates how to retrieve data from the Northwind database in Microsoft SQL Server and display it in a GridView control, with data caching enabled. 设置为20秒, CacheExpirationPolicy因为Absolute属性默认设置为值, 所以此页的用户每隔20秒就会看到最新的数据。 CacheDurationThe CacheDuration is set to 20 seconds and, because the CacheExpirationPolicy property is set to the Absolute value by default, users of this page will see fresh data every 20 seconds.

<%@ 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控件支持数据缓存。The SqlDataSource control supports data caching. 在缓存数据时, Select方法从缓存而不是基础数据库中检索数据。While data is cached, the Select method retrieves data from the cache rather than from the underlying database. 缓存过期后, 该方法Select将从基础数据库中检索数据, 然后再次缓存数据。When the cache expires, the Select method retrieves data from the underlying database, and then caches the data again.

当属性设置为true , 并且CacheDuration属性设置为大于0的值时,控件将自动缓存数据,指示缓存在缓存条目之前存储数据的秒数SqlDataSource EnableCaching被丢弃。The SqlDataSource control automatically caches data when the EnableCaching property is set to true and the CacheDuration property is set to a value greater than 0, which indicates the number of seconds that the cache stores data before the cache entry is discarded. 值0表示无限长的缓存。A value of 0 indicates an infinitely long cache.

缓存的行为取决于持续时间和CacheExpirationPolicy属性的组合。The behavior of the cache is determined by a combination of the duration and the CacheExpirationPolicy property. 如果将Absolute SqlDataSource属性设置为值, 则在第一次数据检索操作上缓存数据, 最多会将其保存在内存中, 最多可为CacheDuration属性指定的时间量。 CacheExpirationPolicyIf the CacheExpirationPolicy property is set to the Absolute value, the SqlDataSource caches data on the first data retrieval operation, holds it in memory for, at most, the amount of time that is specified by CacheDuration property. 如果需要内存, 则数据可能在持续时间之前释放。The data might be released before the duration time, if the memory is required. 然后, 在下一操作期间刷新缓存。The cache is then refreshed during the next operation. 如果将Sliding属性设置为值, 则数据源控件会在第一次数据检索操作中缓存数据, 但会重置其保存每个后续操作的缓存的时间窗口。 CacheExpirationPolicyIf the CacheExpirationPolicy property is set to the Sliding value, the data source control caches data on the first data retrieval operation, but resets the time window that it holds the cache for each subsequent operation. 如果自上一CacheDuration Select次操作后, 如果时间与值相等, 则缓存过期。The cache expires, if there is no activity for a time that is equal to the CacheDuration value since the last Select operation.

只有SqlDataSourceDataSet模式下, 控件才能缓存数据。The SqlDataSource control can cache data only when it is in DataSet mode. 如果NotSupportedException Select 控件设置DataReader为值, 并且还启用了缓存, 则方法会引发异常。 SqlDataSourceA NotSupportedException exception is thrown by the Select method, if the SqlDataSource control is set to the DataReader value and caching is also enabled.

重要

使用 Microsoft Windows 身份验证下的客户端模拟时, 将在第一个用户访问数据时缓存数据。When you are using client impersonation under Microsoft Windows authentication, the data is cached when the first user accesses the data. 如果其他用户请求相同的数据, 则从缓存中检索数据。If another user requests the same data, the data is retrieved from the cache. 通过对数据库进行另一次调用以验证用户对数据的访问权限, 不会检索数据。The data is not retrieved by making another call to the database to verify the user's access to the data. 如果希望有多个用户访问数据, 并且希望数据库的安全配置验证每个数据的检索, 请不要使用缓存。If you expect more than one user to access the data, and you want each retrieval to the data to be verified by the security configurations for the database, do not use caching.

适用于

另请参阅