• OutputCache属性详解(四)— SqlDependency


    目录

    OutputCache概念学习

     

    NoStore

    bool值,用于决定是否阻止敏感信息的二级存储,默认值为 false。

    该属性的测试代码,我没写出来,不知道如何写,各位知道的大侠请说下哈!

     

    SqlDependency

    标识一组数据库/表名称对的字符串值,页或控件的输出缓存依赖于这些名称对。请注意,SqlCacheDependency 类监视输出缓存所依赖的数据库中的表,因此当更新表中的项时,使用基于表的轮询时将从缓存中移除这些项。如果以值 CommandNotification: 使用通知(在 Microsoft SQL Server 2005 中),则最终会使用 SqlDependency 类向 SQL Server 2005 服务器注册查询通知。

     

    SqlCacheDependency

    数据库缓存依赖主要解决的是当数据库的内容发生改变时,如何及时通知缓存,并更新缓存中的数据的问题。本节就介绍如何使用SQL Server 2005和.NET 2.0实现数据库的缓存依赖。

    推荐一篇:http://www.cnblogs.com/systemxgl/archive/2009/09/03/1559828.html


    使用SqlDependency需要实现以下步骤:

    1.注册数据库连接池

    aspnet_regsql:http://msdn.microsoft.com/zh-cn/library/ms229862

    说明

    -?

    在命令窗口中显示 Aspnet_regsql.exe 帮助文本。

    -W

    在向导模式下运行该工具。如果未指定任何命令行参数,那么这是默认设置。

    -C <连接字符串>

    指定要连接到正在运行 SQL Server 并且将安装或者已经安装数据库的计算机的连接字符串。如果您仅指定服务器 (-S) 和登录(-U-P,或 -E)信息,则此选项不是必需的。

    -S <服务器>

    指定正在运行 SQL Server 并且将安装或者已安装数据库的计算机的名称。

    -U <登录 ID>

    要用来登录的 SQL Server 用户 ID。此选项还要求使用密码 (-P) 选项。如果要使用 Windows 凭据 (-E) 进行身份验证,则此选项不是必需的。

    -P <密码>

    要用来登录的 SQL Server 密码。此选项还要求使用用户 ID (-U) 选项。如果要使用 Windows 凭据 (-E) 进行身份验证,则此选项不是必需的。

    -E

    使用当前登录用户的 Windows 凭据进行身份验证。

    -sqlexportonly <文件名>

    生成可用于添加或移除指定功能的 SQL 脚本文件。不执行指定的操作。

     示意:

    aspnet_regsql.exe -S localhost -U sa -P abcd1234 -ed -d TestStaff -et -t dbo.Staff

    -? 显示该工具的帮助功能; 
    -S 后接的参数为数据库服务器的名称或者IP地址; 
    -U 后接的参数为数据库的登陆用户名; 
    -P 后接的参数为数据库的登陆密码; 
    -E 当使用windows集成验证时,使用该功能; 
    -d 后接参数为对哪一个数据库采用SqlCacheDependency功能; 
    -t 后接参数为对哪一个表采用SqlCacheDependency功能; 
    -ed 允许对数据库使用SqlCacheDependency功能; 
    -dd 禁止对数据库采用SqlCacheDependency功能; 
    -et 允许对数据表采用SqlCacheDependency功能; 
    -dt 禁止对数据表采用SqlCacheDependency功能; 
    -lt 列出当前数据库中有哪些表已经采用sqlcachedependency功能。 

    注意大小写

    注册完成后,我们会看到数据库中会多出一张注册存储缓存的表:

     2.配置项目WebConfig代码 

    <?xml version="1.0"?>
    <!--
      For more information on how to configure your ASP.NET application, please visit
      http://go.microsoft.com/fwlink/?LinkId=169433
      -->
    <configuration>
      <connectionStrings>
        <add name="TestSqlCacheDependency_connectionStrings" connectionString="SERVER=localhost;UID=SA;PWD=abcd1234;DATABASE=TestStaff;"/>
      </connectionStrings>
      <system.web>
        <caching>
          <sqlCacheDependency enabled="true">
            <databases>
              <!--pollTime 设置 sqlCacheDependency 轮询数据库表以查看是否发生更改的频率-->
              <add connectionStringName="TestSqlCacheDependency_connectionStrings" name="TestSqlCacheDependency" pollTime="50000"/>
            </databases>
          </sqlCacheDependency>
        </caching>
        <compilation debug="true"/>
      </system.web>
    </configuration>

    3.配置调用程序

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <%@ OutputCache SqlDependency="TestSqlCacheDependency:Staff" Duration="100" VaryByParam="id" %>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script>
    </head>
    <body>
        <form id="form1" runat="server">
        <asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1">
        </asp:GridView>
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" SqlCacheDependency="TestSqlCacheDependency" SelectCommand="SELECT TOP 10 [Password],[Gender],[Status] FROM [dbo].[Staff]"
            ConnectionString="<%$ConnectionStrings:TestSqlCacheDependency_connectionStrings %>">
        </asp:SqlDataSource>
        <%=DateTime.Now %>
        </form>
    </body>
    </html>

    4.测试

     利用sql server profiler监测,多次刷新页面,也不会有相关的SQL查询请求,如下:

     关于OutputCache五个章节就写完了,如有问题,欢迎指正。

     

    作者:释迦苦僧   出处:http://www.cnblogs.com/woxpp/p/3986185.html 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。

     

     

  • 相关阅读:
    Mysql的ONLY_FULL_GROUP_BY
    Redis报错“ OOM command not allowed when used memory > 'maxmemory' ”
    redis发布订阅客户端报错
    使用IDEA远程调试SpringBoot程序
    kafk学习笔记(一)
    Ubuntu中卸载node和npm并重装
    一些常用的类型转换
    一台电脑配置多个GigHub账号
    百度网盘文件直接下载方法(跳过每次需要启动百度网盘下载的方式)
    如何激活IDEA工具,亲测有效
  • 原文地址:https://www.cnblogs.com/woxpp/p/3986185.html
Copyright © 2020-2023  润新知