SqlDataSource.CacheExpirationPolicy 属性

定义

获取或设置缓存的到期行为,该行为与持续时间组合在一起可以描述数据源控件所用缓存的行为。

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

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

缓存的行为由 CacheDuration 设置的组合 CacheExpirationPolicy 决定。 如果属性 CacheExpirationPolicy 设置为 Absolute 该值,则 SqlDataSource 缓存第一个数据检索操作上的数据,将其保存在内存中,该时间由 CacheDuration 该属性指定的时间量,然后在时间失效后将其丢弃。 然后,在下一操作期间刷新缓存。 CacheExpirationPolicy如果该属性设置为Sliding该值,则数据源控件会缓存第一个数据检索操作上的数据,但重置它保存每个后续操作的缓存的时间范围。 如果某个时间没有等于自上次Select操作以来的值的活动CacheDuration,缓存将过期。

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

重要

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

适用于

另请参阅