SQL Cache Invalidation
ASP.NET 快速入门教程
绑定到数据库
C# Data Source SqlCacheInvalidation
教程中有这么一段话。
ASP.NET 2.0 中的一个称为 SQL Cache Invalidation 的新功能允许配置数据源无限期地(或在指定的持续时间内)缓存数据,直至数据库中的数据更改,届时缓存项将被清除。此项技术允许使用更高的 CacheDuration 值,同时仍然保证显示的数据始终与数据库中的值匹配。SQL Cache Invalidation 仅在 Microsoft™ SQL Server 数据库上受支持。存在两种 SQL Cache Invalidation 实现:SQL Server 2005 上支持的基于通知的实现和早期版本的 SQL Server 上支持的基于轮询的实现。本教程的 SQL Cache Invalidation 部分将描述配置这其中任一种实现所需要的步骤。
一旦配置了 SQL Cache Invalidation,就可以通过指定数据源的 SqlCacheDependency 属性从数据源控件中使用它。如果使用基于轮询的实现,则该值接受 connectionName:tableName 形式的格式。如果使用基于通知的实现,则将此属性设置为“CommandNotification”。
在下一个示例中,CacheDuration 被设置为“Infinite”,并且指定了 SqlCacheDependency。注意,TimeStamp 列在使用 GridView 上的“编辑” 按钮修改数据之前不会更新。
但是代码中并没有提到Infinite, 这个是怎么回事?
C# Data Source SqlCacheInvalidation
<asp:SqlDataSource ID="SqlDataSource1" Runat="server" SelectCommand="SELECT DatePart(second, GetDate()) As TimeStamp, [au_id], [au_lname], [au_fname], [phone], [address], [city], [state], [zip], [contract] FROM [authors]"
UpdateCommand="UPDATE [authors] SET [au_lname] = @au_lname, [au_fname] = @au_fname, [phone] = @phone, [address] = @address, [city] = @city, [state] = @state, [zip] = @zip, [contract] = @contract WHERE [au_id] = @au_id"
ConnectionString="<%$ ConnectionStrings:Pubs %>" EnableCaching="True" FilterExpression="state='{0}'" SqlCacheDependency="Pubs:Authors">
<UpdateParameters>
<asp:Parameter Name="au_lname" />
<asp:Parameter Name="au_fname" />
<asp:Parameter Name="phone" />
<asp:Parameter Name="address" />
<asp:Parameter Name="city" />
<asp:Parameter Name="state" />
<asp:Parameter Name="zip" />
<asp:Parameter Name="contract" />
<asp:Parameter Name="au_id" />
</UpdateParameters>
<FilterParameters>
<asp:ControlParameter ControlID="DropDownList1" Name="state" PropertyName="SelectedValue" />
</FilterParameters>
</asp:SqlDataSource>
关于这个缓存,下面的链接讲的要稍微详细一点。
http://blog.csdn.net/quou2002/archive/2006/02/08/594341.aspx