`
isiqi
  • 浏览: 15997263 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

ASP.NET - 使用 SqlDataSource 控件缓存数据

阅读更多

SqlDataSource 控件可对它检索过的数据进行缓存,这样可以避免再次运行资源消耗量较大的查询,从而提高应用程序的性能。缓存主要用于数据变化不频繁的情况。

此外,当通过 System.Data.SqlClient 提供程序使用 SqlDataSource 控件时,可以使用 SqlCacheDependency 对象。这样可使 SqlDataSource 控件仅在 SelectCommand 返回的数据在数据库中被修改时才刷新缓存。

一、通过 SqlDataSource 控件启用缓存

SqlDataSource 控件的 DataSourceMode 属性设置为 DataSet 时,该控件可对数据进行缓存。默认情况下并未启用缓存,但可以通过将 EnableCaching 属性设置为 true 来启用缓存。

将基于一个时间间隔对缓存数据进行刷新。可以将 CacheDuration 属性设置为刷新缓存之前要等待的秒数。SqlDataSource 控件为每个 ConnectionStringSelectCommand SelectParameters 值的组合维护一个单独的缓存项。

通过设置 CacheExpirationPolicy 属性,可以进一步控制 SqlDataSource 缓存的行为。Absolute 值会在超过 CacheDuration 值时强制刷新缓存。将 CacheExpirationPolicy 属性设置为 Sliding,则仅在从最后一次访问缓存项起超过 CacheDuration 值之后才对缓存进行刷新。

下面的代码示例演示一个 SqlDataSource 控件,该控件配置为每 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 >

<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>

二、使用 SqlCacheDependency 对象

SqlDataSource 控件支持基于 SqlCacheDependency 对象的可选过期策略。可以使用 SqlCacheDependency 对象来确保仅在修改了数据库中的源表时才对缓存数据进行刷新。为了使用 SqlCacheDependency 对象,必须为数据库服务器运行 Microsoft SQL Server 通知服务。

如果您的数据源为 SQL Server 7.0 或更高版本,则您可通过将 SqlDataSource 控件的 SqlCacheDependency 属性设置为由一个连接字符串和表标识符组成的字符串(形式为“ConnectionString:Table”),来使用 SqlCacheDependency 对象对数据库进行轮询以检查更改。如果 SqlCacheDependency 涉及多个表,则连接字符串和表名称对以分号分隔,如下面的示例所示:

ConnectionString1:Table1;ConnectionString2:Table2”。

如果数据源是 Microsoft SQL Server 2005,则还可以选择让 SQL Server 向应用程序通知更改,而不用轮询检查更改。通过将 SqlCacheDependency 属性设置为字符串“CommandNotification”,可以使用该通知模型。

下面的代码示例演示如何创建 Microsoft SQL Server 缓存依赖项,以及如何设置 SqlDataSource 控件的 SqlCacheDependency 属性。在该示例中,每 120 秒对数据库进行一次轮询。如果在这段时间内 Northwind Employees 表中的数据发生更改,则下次对数据库进行轮询时将对由 SqlDataSource 控件缓存和 GridView 控件显示的数据进行刷新。

<%@ Page language="c#" %>

<!--

The page uses an example configuration that includes

connection strings and a defined SqlCacheDependecy.

<?xml version="1.0"?>

<configuration>

<connectionStrings>

<add name="MyNorthwind"

connectionString="Data Source="localhost";Integrated Security="SSPI";Initial Catalog="Northwind""

providerName="System.Data.SqlClient" />

</connectionStrings>

<system.web>

<cache>

<sqlCacheDependency enabled="true">

<databases>

<add

name="Northwind"

connectionStringName="MyNorthwind"

pollTime="120000" />

</databases>

</sqlCacheDependency>

</cache>

</system.web>

</configuration>

-->

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html >

<head runat="server">

<title>ASP.NET Example</title>

</head>

<body>

<form id="Form1" method="post" runat="server">

<asp:gridview

id="GridView1"

runat="server"

datasourceid="SqlDataSource1" />

<asp:sqldatasource

id="SqlDataSource1"

runat="server"

connectionstring="<%$ ConnectionStrings:MyNorthwind%>"

selectcommand="SELECT EmployeeID,FirstName,Lastname FROM Employees"

enablecaching="True"

cacheduration="300"

cacheexpirationpolicy="Absolute"

sqlcachedependency="Northwind:Employees" />

</form>

</body>

</html>

分享到:
评论

相关推荐

    《零基础学ASP.NET 2.0》第14章 数据源控件访问数据库

    14.1.1 使用SqlDataSource 数据源控件 246 14.1.2 参数声明 248 14.1.3 缓存数据 250 14.2 访问Access数据库 251 14.2.1 连接到Access数据文件 251 14.2.2 更新Access数据库 253 14.3 显示和转换XML数据 254 14.3.1 ...

    ASP.NET 控件的使用

    9.5 使用SqlDataSource控件缓存数据库数据 291 9.6 小结 293 第10章 使用List控件 294 10.1 List控件概述 294 10.1.1 声明列表项 294 10.1.2 绑定到数据源 296 10.1.3 确定被选中的列表项 299 10.1.4 追加数据项 ...

    ASP.NET.4揭秘

    9.5 使用sqldatasource控件缓存数据库数据330 9.6 小结332 第10章 使用列表控件333 10.1 列表控件概述333 10.1.1 声明列表项333 10.1.2 绑定到数据源335 10.1.3 确定被选中的列表项338 10.1.4 追加数据项342 10.1.5 ...

    零基础学ASP.NET 2.0电子书&源代码绝对完整版1

    示例描述:本章演示ASP.NET 2.0网站的预编译以及学习ASP.NET 2.0的前置知识。 WebSite文件夹 创建的ASP.NET 2.0 Web站点。 www文件夹 第一个用C#开发的Web应用程序。 bianyi.bat 编译网站的批处理文件。 ...

    asp.net知识库

    Visual Web Development 2005开发ASP.NET使用小技巧 ASP.NET 2.0 异步页面原理浅析 [1] [原] 自定义通用System.Web.UI.IHierarchicalDataSource简单实现 在 ASP.NET 2.0 中创建 Web 应用程序主题 ASP.NET 2.0 中的...

    ASP.NET 3.5 开发大全11-15

    11.5.2 ASP.NET分页控件的使用 11.6 小结 第12章 ASP.NET的皮肤、主题和母版页 12.1 皮肤和主题 12.1.1 CSS简介 12.1.2 CSS基础 12.1.3 CSS常用属性 12.1.4 将CSS应用在控件上 12.1.5 主题和皮肤 12.1.6 页面主题和...

    ASP.NET 3.5 开发大全1-5

    11.5.2 ASP.NET分页控件的使用 11.6 小结 第12章 ASP.NET的皮肤、主题和母版页 12.1 皮肤和主题 12.1.1 CSS简介 12.1.2 CSS基础 12.1.3 CSS常用属性 12.1.4 将CSS应用在控件上 12.1.5 主题和皮肤 12.1.6 页面主题和...

    asp.net教学讲义

    第九章:SQLDataSource控件与DataList 139 9.1 数据源控件简介 139 9.2 SqlDataSource控件 139 9.3 示例 141 9.4 添加Insert、Update和Delete语句 143 9.5 DataList控件 144 9.5.1 使用DataList浏览数据 144 9.5.2 ...

    ASP.NET教学讲义,完整章节

    第九章:SQLDataSource控件与DataList 148 9.1 数据源控件简介 148 9.2 SqlDataSource控件 148 9.3 示例 150 9.4 添加Insert、Update和Delete语句 152 9.5 DataList控件 153 第十章:数据绑定控件(一) 161 10.1 ...

    ASP.NET教学讲义(吐血推荐)

    第九章:SQLDataSource控件与DataList 第十章:数据绑定控件(一) 第十一章:数据绑定控件(二) 第十二章:用户控件和自定义控件 第十三章:配置和错误处理 第十四章:跟踪、缓存、部署 第十五章:创建Web服务

    ASP.NET3.5从入门到精通

    11.5.2 ASP.NET 分页控件的使用 11.6 小结 第 12 章 ASP.NET 的皮肤、主题和母版页 12.1 皮肤和主题 12.1.1 CSS 简介 12.1.2 CSS 基础 12.1.3 CSS 常用属性 12.1.4 将CSS 应用在控件上 12.1.5 主题和皮肤 12.1.6 ...

    在ASP.NET 2.0中操作数据之五十六:使用ObjectDataSource缓存数据

    导言  就计算机科学而言,caching就是将所需要的数据...同样我们可以通过ObjectDataSource 和SqlDataSource控件,在控件级(control level)对数据进行缓存;同时,ASP.NET的data cache提供了丰富的缓存接口(caching

    ASP.NET 3.5 开发大全

    11.5.2 ASP.NET分页控件的使用 11.6 小结 第12章 ASP.NET的皮肤、主题和母版页 12.1 皮肤和主题 12.1.1 CSS简介 12.1.2 CSS基础 12.1.3 CSS常用属性 12.1.4 将CSS应用在控件上 12.1.5 主题和皮肤 12.1.6 页面主题和...

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    11.3.4 使用数据源控件的缓存 11.4 缓存依赖 11.4.1 文件和缓存项目依赖 11.4.2 聚合依赖 11.4.3 移除项目回调 11.4.4 理解SQL缓存通知 11.4.5 缓存通知的工作方式 11.4.6 启用通知 11.4.7 创建...

    2.ASP.NET.2.0.高级编程(第4版) [1/7]

    11.1.1 SqlDataSource控件 310 11.1.2 XmlDataSource控件 316 11.1.3 ObjectDataSource控件 316 11.1.4 SiteMapDataSource控件 320 11.2 配置数据源控件的高速缓存 321 11.3 存储连接信息 321 11.4 使用绑定的...

    ASP.NET 3.5 开发大全word课件

    11.5.2 ASP.NET分页控件的使用 11.6 小结 第12章 ASP.NET的皮肤、主题和母版页 12.1 皮肤和主题 12.1.1 CSS简介 12.1.2 CSS基础 12.1.3 CSS常用属性 12.1.4 将CSS应用在控件上 12.1.5 主题和皮肤 12.1.6 页面主题和...

    ASP.NET4高级程序设计(第4版) 3/3

    11.3.4 使用数据源控件的缓存 376 11.4 缓存依赖 379 11.4.1 文件和缓存项目依赖 379 11.4.2 聚合依赖 380 11.4.3 移除项目回调 381 11.4.4 理解SQL缓存通知 383 11.4.5 缓存通知的工作方式 384 ...

    ASP.NET2.0高级编程(第4版)1/6

    25.4 使用ASP.NET移动控件910 25.4.1 AdRotator控件910 25.4.2 Calendar控件912 25.4.3 Label控件915 25.4.4 TextBox控件915 25.4.5 TextView控件917 25.4.6 Command控件918 25.4.7 Image控件918 25.4.8 PhoneCall...

    零基础学ASP.NET 2.0&源代码绝对完整版1

    示例描述:本章演示ASP.NET 2.0网站的预编译以及学习ASP.NET 2.0的前置知识。 WebSite文件夹 创建的ASP.NET 2.0 Web站点。 www文件夹 第一个用C#开发的Web应用程序。 bianyi.bat 编译网站的批处理文件。 form...

Global site tag (gtag.js) - Google Analytics