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 方法从基础数据库检索数据,然后再次缓存数据。

当 属性设置为 并且 CacheDuration 属性设置为true大于 0 的值时EnableCaching,控件SqlDataSource会自动缓存数据,该值指示缓存在放弃缓存条目之前存储数据的秒数。 值为 0 表示缓存无限长。

缓存的行为由持续时间和 CacheExpirationPolicy 属性的组合决定。 如果 属性 CacheExpirationPolicy 设置为 Absolute 值,则会 SqlDataSource 在第一个数据检索操作中缓存数据,将其保留在内存中,最多保留属性 CacheDuration 指定的时间量。 如果需要内存,可以在持续时间之前释放数据。 然后,缓存在下一个操作期间刷新。 CacheExpirationPolicy如果 属性设置为 Sliding 值,则数据源控件将缓存第一个数据检索操作中的数据,但会重置它保留每个后续操作缓存的时间窗口。 如果自上次Select操作以来没有活动等于CacheDuration值,则缓存将过期。

控件 SqlDataSource 只能在处于模式时 DataSet 缓存数据。 NotSupportedException如果 SqlDataSource 控件设置为 DataReader 值并且还启用了缓存,则 方法将Select引发异常。

重要

在 Microsoft Windows 身份验证 下使用客户端模拟时,当第一个用户访问数据时,数据将缓存。 如果其他用户请求相同的数据,则会从缓存中检索数据。 不通过对数据库进行另一次调用来检索数据,以验证用户对数据的访问权限。 如果希望多个用户访问数据,并且希望通过数据库的安全配置验证对数据的每次检索,请不要使用缓存。

适用于

另请参阅