ASP.NET 输出缓存的一项高级功能是 SQL 缓存依赖项。SQL 缓存依赖项使您可以缓存依赖于 SQL Server 表中数据的页。您可以配置 SQL Server 和 ASP.NET 以缓存页请求,降低服务器工作负荷,直到页所依赖的数据已在 SQL Server 中更新为止。对于相对保持静态的产品目录或客户注册信息等数据而言,SQL 缓存依赖项很有用。
内容包括:
创建并配置页,以显示 Northwind 数据库中的数据。
为 SQL 缓存通知启用数据库。
在页以及 Web.config 文件中指定 SQL 缓存依赖项。
对 Northwind 数据库进行更改并查看缓存行为。
首先创建文件系统网站(这里就不多说了)
为 SQL Server 启用缓存通知
1.在 Windows“启动”菜单中,指向“所有程序”,指向“附件”,然后单击“命令提示符”以打开命令提示窗口。
2.在磁盘驱动器中找到 Aspnet_regsql.exe 可执行文件。此文件随 .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. 向项目中添加数据连接 要在VS2005中使用 SQL Server 数据库,您需要向 Northwind 数据库添加连接。
向项目添加数据源
在“服务器资源管理器中,右击“数据连接”,然后单击“添加连接”。
配置数据源然后选择 Northwind 数据库。
向网页添加时间戳和数据 现在可以创建网页来演示缓存处理。在本节中,您将添加一个时间戳来跟踪页创建时间,并添加一个 GridView 控件来查看 Northwind 数据库的 Employees 表。
步骤:
切换到或打开 Default.aspx 页。
切换到“设计”视图。
从工具箱的“标准”组中,将一个 Label 控件拖到页上,保留默认名称 Label1。
在“服务器资源管理器中,展开“数据连接”。
为以前创建的数据连接展开节点。
展开“表”节点。
将 Employees 表拖到页上。
Visual Web Designer 创建一个 GridView 控件,它配置为使用您所选择的连接和表。
在“GridView 任务”菜单上,单击“配置数据源。
默认数据连接字符串名称 NorthwindConnectionString1 出现在“配置数据源”向导的第一个步骤中。
单击“下一步”。
在“配置 Select 语句”窗格中,选择“指定来自表或视图的列”。
在“名称”列表中,单击 Employees。
在“列”列表中,选择 EmployeeID、LastName 和 FirstName 列。
单击“下一步”。
单击“完成”。
Visual Web Designer 配置 GridView 控件以显示您所选择的数据。
注意
如果看到一条消息询问您是否要刷新 GridView 控件的字段和键,单击“是”。
添加以下突出显示的代码,以显示指示页创建的时间戳:
protected void Page_Load(Object sender, System.EventArgs e)
{
Label1.Text = System.DateTime.Now.ToString();
}
测试不使用缓存功能的页
现在可以运行页,并观察不使用缓存功能的行为。此时将加载页并显示当前服务器时间,然后将检索数据并将其放置在页中。
测试不使用缓存功能的页
按 Ctrl+F5 运行该页。
在浏览器中刷新页
注意,时间戳随着每次页刷新而更改。数据将保持相同。
为缓存功能配置网页
在本部分演练中,您将基于 Northwind 数据库的 Employees 表为 SQL 缓存依赖项配置页。
为缓存功能配置网页在页顶部,添加下面的指令以指示依赖项:
<%@ OutputCache Duration="3600" SqlDependency="Northwind:Employees" VaryByParam="none" %>
VaryByParam 属性指示缓存时 ASP.NET 是否应考虑页参数(如查询字符串或发布值)。当 VaryByParam 设置为 none 时,将不考虑任何参数;无论提供什么附加参数,都将向所有用户发送相同的页。将 VaryByParam 设置为 *(星号)表明,对于每个唯一的请求参数组合,将缓存一个唯一页。但是,将 VaryByParam 设置为 * 会缓存页的许多不同版本,所以如果您知道缓存变化所依据的参数,建议您在 VaryByParam 属性中显式指定这些参数,避免出现多个版本。
在 Web.config 文件中设置缓存配置
除了前面部分中网页的 OutputCache 声明外,您需要在 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。如果您的连接字符串具有不同的名称,请替换为该名称。
注意 :在连接字符串中指定的帐户凭据必须具有足够的特权来轮询数据库。
启用缓存后,刷新页时将不再导致时间戳或数据库查询更新,因为 ASP.NET 将从缓存中满足页请求。
测试使用缓存功能的页
按 Ctrl+F5 运行该页。
注意:时间戳在每次页刷新时保持不变。将从缓存中检索页。
更改数据来查看缓存验证
UPDATE dbo.Employees SET LastName = 'Doe' WHERE (EmployeeID = 5)
这将把雇员 5 的名称更改为 Doe。
现在可以测试页,以查看数据和时间戳是否已更改。
按 Ctrl+F5 运行该页。
注意,时间戳已更改,并显示新数据。
按 Ctrl+F5 再次运行该页。
这次时间戳保持不变,因为数据未更改,并且现在正从缓存中再次检索该页。
|
请发表评论