将 ASP.NET 输出缓存与 SQL Server 结合使用

转载:http://msdn2.microsoft.com/zh-cn/library/e3w8402y(VS.80).aspx

ASP.NET 输出缓存的一项高级功能是 SQL 缓存依赖项。SQL 缓存依赖项使您可以缓存依赖于 SQL Server 表中数据的页。您可以配置 SQL Server 和 ASP.NET 以缓存页请求,降低服务器工作负荷,直到页所依赖的数据已在 SQL Server 中更新为止。对于相对保持静态的产品目录或客户注册信息等数据而言,SQL 缓存依赖项很有用。

本演练中阐释的任务包括:

  • 创建并配置页,以显示 Northwind 数据库中的数据。

  • 为 SQL 缓存通知启用数据库。

  • 在页以及 Web.config 文件中指定 SQL 缓存依赖项。

  • 对 Northwind 数据库进行更改并查看缓存行为。

先决条件先决条件

若要完成本演练,您需要:

创建网站创建网站

如果您已在 Visual Web Developer 中创建了网站(请参见 演练:在 Visual Web Developer 中创建基本网页),则可以使用该网站并转至本演练的后面部分“为 SQL Server 启用缓存通知”。否则,按照下面的步骤创建一个新的网站和网页。

创建文件系统网站

  1. 打开 Visual Web Developer。

  2. 在“文件”菜单上单击“新建网站”。(在 Visual Web Developer 速成版中,在“文件”菜单上单击“新建”,然后单击“网站”。)

    出现“新建网站”对话框。

  3. 在“Visual Studio 已安装的模板”之下单击“ASP.NET 网站”。

  4. 在“位置”框中输入要保存网站页面的文件夹的名称。

    例如,键入文件夹名 C:\WebSites。

  5. 在“语言”列表中,单击您想使用的编程语言。

  6. 单击“确定”。

    Visual Web Developer 创建该文件夹和一个名为 Default.aspx 的新页。

为 SQL Server 启用缓存通知为 SQL Server 启用缓存通知

必须配置 SQL Server 以就依赖数据中的更改向 ASP.NET 提供合适的通知。您需要具有管理特权才能配置服务器。

为 SQL Server 启用缓存通知

  1. 在 Windows“启动”菜单中,指向“所有程序”,指向“附件”,然后单击“命令提示符”以打开命令提示窗口。

  2. 在磁盘驱动器中找到 Aspnet_regsql.exe 可执行文件。此文件随 .NET Framework 2.0 版安装在下面的位置:

    %windir%\Microsoft.NET\Framework\FrameworkVersion

    确保 %windir% 表示 Windows 目录并且 .NET Framework 版本为 2.0 或更高版本。该路径可能看起来类似于下面这样:

    C:\WINDOWS\Microsoft.NET\Framework\v2.0.40217
  3. 使用下面的命令为 Northwind 数据库中的 Employees 表启用缓存通知:

    aspnet_regsql.exe -S <Server> -U <Username> -P <Password> -ed -d Northwind -et -t Employees
    Note注意

    您需要具有管理特权,或管理帐户和密码。如果没有此信息,请与数据库管理员联系。

    将出现一条消息,指示启用数据库的成功与失败。下面的消息指示成功:

    Enabling the table for SQL cache dependency.
    ..
    Finished.
向网页添加时间戳和数据向网页添加时间戳和数据

现在可以创建网页来演示缓存处理。在本节中,您将添加一个时间戳来跟踪页创建时间,并添加一个 GridView 控件来查看 Northwind 数据库的 Employees 表。

向网页添加时间戳和数据

  1. 切换到或打开 Default.aspx 页。

  2. 切换到“设计”视图。

  3. 从工具箱的“标准”组中,将一个 Label 控件拖到页上,保留默认名称 Label1

  4. 在“服务器资源管理器”(Visual Web Developer 速成版中为“数据库资源管理器”)中,展开“数据连接”。

  5. 为以前创建的数据连接展开节点。

  6. 展开“表”节点。

  7. 将 Employees 表拖到页上。

    Visual Web Designer 创建一个 GridView 控件,它配置为使用您所选择的连接和表。

  8. 在“GridView 任务”菜单上,单击“配置数据源。

    默认数据连接字符串名称 NorthwindConnectionString1 出现在“配置数据源”向导的第一个步骤中。

  9. 单击“下一步”。

  10. 在“配置 Select 语句”窗格中,选择“指定来自表或视图的列”。

  11. 在“名称”列表中,单击 Employees。

  12. 在“列”列表中,选择 EmployeeID、LastName 和 FirstName 列。

  13. 单击“下一步”。

  14. 单击“完成”。

    Visual Web Designer 配置 GridView 控件以显示您所选择的数据。

    Note注意

    如果看到一条消息询问您是否要刷新 GridView 控件的字段和键,单击“是”。

  15. 双击页的空白部分。

    设计器生成 Page_Load 方法并切换视图。

  16. 添加以下突出显示的代码,以显示指示页创建的时间戳:

    Visual Basic
    Protected Sub Page_Load(ByVal sender As Object, _
            ByVal e As System.EventArgs) _
            Handles Me.Load
    <b>     Label1.Text = System.DateTime.Now</b>
    End Sub
    

    protected void Page_Load(Object sender, System.EventArgs e)
    {
    <b>     Label1.Text = System.DateTime.Now.ToString();</b>
    }
    
  17. 保存该文件。

为缓存功能配置网页为缓存功能配置网页

在本部分演练中,您将基于 Northwind 数据库的 Employees 表为 SQL 缓存依赖项配置页。

为缓存功能配置网页

  1. 切换到“源”视图。

  2. 在页顶部,添加下面的指令以指示依赖项:

    <%@ OutputCache Duration="3600" SqlDependency="Northwind:Employees" VaryByParam="none" %>

VaryByParam 属性指示缓存时 ASP.NET 是否应考虑页参数(如查询字符串或发布值)。当 VaryByParam 设置为 none 时,将不考虑任何参数;无论提供什么附加参数,都将向所有用户发送相同的页。将 VaryByParam 设置为 *(星号)表明,对于每个唯一的请求参数组合,将缓存一个唯一页。但是,将 VaryByParam 设置为 * 会缓存页的许多不同版本,所以如果您知道缓存变化所依据的参数,建议您在 VaryByParam 属性中显式指定这些参数。有关详细信息,请参见 缓存页的多个版本

在 Web.config 文件中设置缓存配置在 Web.config 文件中设置缓存配置

除了前面部分中网页的 OutputCache 声明外,您需要在 Web.config 文件中指定缓存详细信息。

创建和更新 Web.config 文件

  1. 如果您的网站已具有 Web.config 文件,请转至步骤 4。

  2. 在解决方案资源管理器中,右击网站的名称,然后单击“添加新项”。

  3. 在“添加项”对话框中,单击“Web 配置文件”,然后单击“添加”。

    请确保使用名称 Web.config。

  4. 将下面的 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>
    Note注意

    前面您在创建数据连接时,已建立了连接字符串名称 NorthwindConnectionString1。如果您的连接字符串具有不同的名称,请替换为该名称。

    Note注意

    在连接字符串中指定的帐户凭据必须具有足够的特权来轮询数据库。

  5. 保存文件,然后将其关闭。

posted @ 2007-07-16 17:00  folen  阅读(717)  评论(0编辑  收藏  举报