将 ASP.NET 输出缓存与 SQL Server 结合使用
ASP.NET 输出缓存的一项高级功能是 SQL 缓存依赖项。SQL 缓存依赖项使您可以缓存依赖于 SQL Server 表中数据的页。您可以配置 SQL Server 和 ASP.NET 以缓存页请求,降低服务器工作负荷,直到页所依赖的数据已在 SQL Server 中更新为止。对于相对保持静态的产品目录或客户注册信息等数据而言,SQL 缓存依赖项很有用。
本演练中阐释的任务包括:
-
创建并配置页,以显示 Northwind 数据库中的数据。
-
为 SQL 缓存通知启用数据库。
-
在页以及 Web.config 文件中指定 SQL 缓存依赖项。
-
对 Northwind 数据库进行更改并查看缓存行为。
若要完成本演练,您需要:
-
对具有 Northwind 数据库的 SQL Server 2000 或 SQL Server 2005 的访问。
-
SQL Server Northwind 数据库的访问权限。有关下载和安装 SQL Server 示例数据库 Northwind 的信息,请参见位于 Microsoft SQL Server 网站上的“Installing Sample Databases”(安装示例数据库)。
注意 如果需要有关如何登录到运行 SQL Server 的计算机的信息,请与服务器管理员联系。
-
Microsoft 数据访问组件 (MDAC) 2.7 版或更高版本。
如果您使用的是 Windows XP 或 Windows Server 2003,那么您已经有了 MDAC 2.7。但是,如果使用 Windows 2000,您可能需要升级您计算机上已经安装的 MDAC。有关更多信息,请参见 MSDN 文章“MDAC Installation”(MDAC 安装)。
-
.NET Framework 2.0 版。
如果您已在 Visual Web Developer 中创建了网站(请参见 演练:在 Visual Web Developer 中创建基本网页),则可以使用该网站并转至本演练的后面部分“为 SQL Server 启用缓存通知”。否则,按照下面的步骤创建一个新的网站和网页。
创建文件系统网站
-
打开 Visual Web Developer。
-
在“文件”菜单上单击“新建网站”。(在 Visual Web Developer 速成版中,在“文件”菜单上单击“新建”,然后单击“网站”。)
出现“新建网站”对话框。
-
在“Visual Studio 已安装的模板”之下单击“ASP.NET 网站”。
-
在“位置”框中输入要保存网站页面的文件夹的名称。
例如,键入文件夹名 C:\WebSites。
-
在“语言”列表中,单击您想使用的编程语言。
-
单击“确定”。
Visual Web Developer 创建该文件夹和一个名为 Default.aspx 的新页。
必须配置 SQL Server 以就依赖数据中的更改向 ASP.NET 提供合适的通知。您需要具有管理特权才能配置服务器。
为 SQL Server 启用缓存通知
-
在 Windows“启动”菜单中,指向“所有程序”,指向“附件”,然后单击“命令提示符”以打开命令提示窗口。
-
在磁盘驱动器中找到 Aspnet_regsql.exe 可执行文件。此文件随 .NET Framework 2.0 版安装在下面的位置:
确保 %windir% 表示 Windows 目录并且 .NET Framework 版本为 2.0 或更高版本。该路径可能看起来类似于下面这样:
C:\WINDOWS\Microsoft.NET\Framework\v2.0.40217
-
使用下面的命令为 Northwind 数据库中的 Employees 表启用缓存通知:
aspnet_regsql.exe -S <Server> -U <Username> -P <Password> -ed -d Northwind -et -t Employees
注意 您需要具有管理特权,或管理帐户和密码。如果没有此信息,请与数据库管理员联系。
将出现一条消息,指示启用数据库的成功与失败。下面的消息指示成功:
Enabling the table for SQL cache dependency. .. Finished.
现在可以创建网页来演示缓存处理。在本节中,您将添加一个时间戳来跟踪页创建时间,并添加一个 GridView 控件来查看 Northwind 数据库的 Employees 表。
向网页添加时间戳和数据
-
切换到或打开 Default.aspx 页。
-
切换到“设计”视图。
-
从工具箱的“标准”组中,将一个 Label 控件拖到页上,保留默认名称 Label1。
-
在“服务器资源管理器”(Visual Web Developer 速成版中为“数据库资源管理器”)中,展开“数据连接”。
-
为以前创建的数据连接展开节点。
-
展开“表”节点。
-
将 Employees 表拖到页上。
Visual Web Designer 创建一个 GridView 控件,它配置为使用您所选择的连接和表。
-
在“GridView 任务”菜单上,单击“配置数据源。
默认数据连接字符串名称 NorthwindConnectionString1 出现在“配置数据源”向导的第一个步骤中。
-
单击“下一步”。
-
在“配置 Select 语句”窗格中,选择“指定来自表或视图的列”。
-
在“名称”列表中,单击 Employees。
-
在“列”列表中,选择 EmployeeID、LastName 和 FirstName 列。
-
单击“下一步”。
-
单击“完成”。
Visual Web Designer 配置 GridView 控件以显示您所选择的数据。
注意 如果看到一条消息询问您是否要刷新 GridView 控件的字段和键,单击“是”。
-
双击页的空白部分。
设计器生成 Page_Load 方法并切换视图。
-
添加以下突出显示的代码,以显示指示页创建的时间戳:
Visual BasicProtected Sub Page_Load(ByVal sender As Object, _ ByVal e As System.EventArgs) _ Handles Me.Load <b> Label1.Text = System.DateTime.Now</b> End Sub
C#protected void Page_Load(Object sender, System.EventArgs e) { <b> Label1.Text = System.DateTime.Now.ToString();</b> }
-
保存该文件。
在本部分演练中,您将基于 Northwind 数据库的 Employees 表为 SQL 缓存依赖项配置页。
为缓存功能配置网页
VaryByParam 属性指示缓存时 ASP.NET 是否应考虑页参数(如查询字符串或发布值)。当 VaryByParam 设置为 none 时,将不考虑任何参数;无论提供什么附加参数,都将向所有用户发送相同的页。将 VaryByParam 设置为 *(星号)表明,对于每个唯一的请求参数组合,将缓存一个唯一页。但是,将 VaryByParam 设置为 * 会缓存页的许多不同版本,所以如果您知道缓存变化所依据的参数,建议您在 VaryByParam 属性中显式指定这些参数。有关详细信息,请参见 缓存页的多个版本。
除了前面部分中网页的 OutputCache 声明外,您需要在 Web.config 文件中指定缓存详细信息。
创建和更新 Web.config 文件
-
如果您的网站已具有 Web.config 文件,请转至步骤 4。
-
在解决方案资源管理器中,右击网站的名称,然后单击“添加新项”。
-
在“添加项”对话框中,单击“Web 配置文件”,然后单击“添加”。
请确保使用名称 Web.config。
-
将下面的 XML 作为 system.web 元素的子级添加到 Web.config 文件中:
<!-- caching section group --> <caching> <sqlCacheDependency enabled = "true" pollTime = "1000" > <databases> <add name="Northwind" connectionStringName="NorthwindConnectionString1" pollTime = "1000" /> </databases> </sqlCacheDependency> </caching>
注意 前面您在创建数据连接时,已建立了连接字符串名称 NorthwindConnectionString1。如果您的连接字符串具有不同的名称,请替换为该名称。
注意 在连接字符串中指定的帐户凭据必须具有足够的特权来轮询数据库。
-
保存文件,然后将其关闭。