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 值,因此即使值为 20 秒, CacheDuration 用户也不会看到新数据。 仅当自上次加载页面以来超过 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 身份验证下使用客户端模拟时,当第一个用户访问数据时,数据将缓存。 如果其他用户请求相同的数据,则会从缓存中检索数据。 不通过对数据库进行另一次调用来检索数据,以验证用户对数据的访问权限。 如果希望多个用户访问数据,并且希望通过数据库的安全配置验证对数据的每次检索,请不要使用缓存。