处理大型门户网站 一般都需要 使用缓存技术这个web加速器
在 PHP 和 java 一般 使用的是 基于squid 来做.
当然在 windows .NET 平台也是可以的 squid有 windows版本.
这个以后再去研究,现在 就介绍一下 .NET 自带的 缓存策略.Microsoft的petshop就用到了它;
  一、基于数据库触发(设置缓存依赖策略,当数据库中数据发生变化时,触发缓存失效;但微软提供的解决方案目前仅支持SQL Server,如果是ORACLE需要自己实现触发接口)。
  二、基于文件依赖的策略(可以设置缓存依赖于文件中的具体键值,当数据更新时,更新文件键值迫使缓存失效)。

然后 然后

  前面两种 当然 和 页面缓存不同. 页面缓存 可能呈现的是已经过期的内容. 而缓存策略轮询 基本上都是 最新的内容.

  下面我们来一步步的实现这个过程吧:
    首先 命令 cmd

    打开DOS 界面

?
cd D:\Windows\Microsoft.NET\Framework\v2.0.50727

  注意:这里是系统安装路径.

  然后  这里我们给数据库fjmr_db设置缓存策略依赖.

?
aspnet_regsql -C "Data Source=.\SQLSERVER05;Integrated Security=True;Initial Catalog=fjmr_DB" -ed  

  然后 这里我们对表N_News注入依赖(当表N_News有增删改操作 就缓存失效)

?
aspnet_regsql -C "Data Source=localhost;Integrated Security=True;Initial Catalog=fjmr_DB" -et -t N_News

然后 在web.config下 配置 缓存策略节点

1 <caching>
2 <!-- 设置数据库 缓存依赖策略 轮询时间 ms 是否启用-->
3 <sqlCacheDependency pollTime="5000" enabled="true">
4 <databases>
5 <!--数据库名称, 数据库链接, 轮询时间 ms-->
6 <add name="fjmr_db" connectionStringName="数据库链接配置" pollTime="5000"/>
7 </databases>
8 </sqlCacheDependency>
9
10 </caching>

  配置好轮询SQL缓存依赖后,就能对页面输出缓存使用SQL依赖了。
  下面是页面缓存失效时间 9999秒! ,也就是说数据库没有更新的话9999秒都不会读库.
  当然如果数据库N_News如果更新了.那么页面就马上会刷新了!

1 <%@ Page Language="C#" %>
2  <%@ OutputCache Duration="9999" VaryByParam="none"
3 SqlDependency="fjmr_db:N_News" %>

如果希望让一个页面依赖多个数据库表,则需要将sqlDependecy特性设置为一组用分号分隔的数据库和数据库表名的列表。

如 :fjmr_db:N_News;fjmr_db:其他表

  也可以在一个用户控件中使用<%@ OutputCache %> 指令来使用轮询SQL缓存依赖。
  也就是说,可以使用轮询SQL缓存依赖来实现部分页面缓存。
  要对SqlDataSource和ObjectDataSource控件使用轮询SQL缓存依赖,只需要设置sqlCache- Dependency属性。
  数据库名必须与配置在Web配置文件<sqlCacheDependency>元素中的数据库名相对应!

<asp:SqlDataSource
id="srcNews"
ConnectionString="<%$ ConnectionStrings:News %>"
SelectCommand="SELECT * FROM N_News"
EnableCaching="true"
SqlCacheDependency="fjmr_db:N_News"
OnSelecting="srcNews_Selecting"
Runat="server" />

我们也可以对Cache对象使用轮询SQL缓存依赖,用SqlCacheDependency对象来代表一个轮询SQL缓存依赖。
  当DataTable添加到Cache时,该类就用作Cache.Insert()的一个参数。
  如果需要创建多个数据库表的依赖,
  则需要创建多个SqlCacheDependency对象并用Aggregate- CacheDependency类的实例表示多个依赖。

1 DataTable news = (DataTable)Cache["_News"];
2  if (news == null)
3 {
4 news = GetNewsFromDB();
5 SqlCacheDependency sqlDepend = new
6 SqlCacheDependency("MyDatabase", "_News");
7 Cache.Insert("_News", news, sqlDepend);
8 }
9 grdNews.DataSource = news;
10 grdNews.DataBind();
11 }

  最后 这种缓存策略只适用于一般 中小型的 缓存加速. 如果对大型系统 做的话 很多时候是用到了 NoSQL技术,分布式缓存服务器.

转载于:https://www.cnblogs.com/ajunForNet/p/4332257.html

.NET 数据库缓存依赖策略实现相关推荐

  1. ASP.NET 数据库缓存依赖

    By Peter A. Bromberg, Ph.D. 在ASP.NET中,Cache类最酷的特点是它能根据各种依赖来良好的控制自己的行为.以文件为基础的依赖是最有用的,文件依赖项是通过使用 Cach ...

  2. System.Web.Caching.Cache类 缓存 各种缓存依赖

    原文:System.Web.Caching.Cache类 缓存 各种缓存依赖 Cache类,是一个用于缓存常用信息的类.HttpRuntime.Cache以及HttpContext.Current.C ...

  3. SQL server数据缓存依赖

    为什么80%的码农都做不了架构师?>>>    SQL server数据缓存依赖有两种实现模式,轮询模式,通知模式. 1  轮询模式实现步骤 此模式需要SQL SERVER 7.0/ ...

  4. yii2 数据库缓存

    本文使用yii2数据库缓存依赖,主要解决一次查询表多次利用,减少对数据表的查询,把数据查出来的值保存在缓存中. 本文使用标准文件存储缓存数据 使用 DbDependency 数据库缓存依赖 /*** ...

  5. 【状态保持】Cache 基于SQL 数据库 的缓存依赖 轮询机制详解

    首先声明一下如果您还不了解什么是Cache(缓存)请您先搜一下有关信息然后再看这篇文章. 当数据库中的信息发生变化的时候,应用程序能够获取变化的通知是缓存依赖得以实现的基础.应用程序可以通过两种途径获 ...

  6. 为什么你的缓存更新策略是先更新数据库后删除缓存,讲讲其他的情况有什么问题?...

    2019独角兽企业重金招聘Python工程师标准>>> 问题:怎么保持缓存与数据库一致? 要解答这个问题,我们首先来看不一致的几种情况.我将不一致分为三种情况 数据库有数据,缓存没有 ...

  7. 掌握分布式环境缓存更新策略,提高缓存与数据库双写一致性!

    概述 随着时代的发展,服务系统架构也已经由最初的单体架构转变为分布式.微服务架构模式. 从数据体量上来看,各系统存储的数据量越来越大,数据的查询性能越来越低. 此时,就需要我们不断的进行优化,最常用的 ...

  8. SQL Server SqlCacheDependency 缓存依赖

     SQL server数据缓存依赖有两种实现模式,轮询模式,通知模式. 1  轮询模式实现步骤 此模式需要SQL SERVER 7.0/2000/2005版本以上版本都支持 主要包含以下几步:  1. ...

  9. 论大规模分布式系统缓存设计策略

      声明:本文为本人在软考系统架构设计师备考期间的练手写作,不保证内容的原创性与正确性,仅供参考,请勿照抄和用于学术论文等正规场合,因不当使用产生后果一律自负. 摘要   2019年3月,我单位联合某 ...

最新文章

  1. leetcode--两数之和--python
  2. 全球最伟大社交软件!微信入选“现代百大设计最佳产品”:排名超Facebook
  3. 插头DP题目泛做(为了对应WYD的课件)
  4. 2021-09-02Hive
  5. 幻灯片母板_如何在Microsoft PowerPoint中创建幻灯片母版
  6. JavaScript学习记录十六
  7. Taylor’s Formula - 泰勒公式
  8. python下载电影_python爬取电影并下载
  9. C++源文件到可执行程序
  10. 4G模块SIM7600绑定AT指定串口号(二)
  11. 带参宏和带参函数的比较(C语言)
  12. 【智力题】兄弟姐妹的性别
  13. 给图片添加多条文字水印和图片水印
  14. 竞业协议“下沉”,普通程序员逃不过的坑
  15. 那些年部署的服务器,cp2k环境部署安装
  16. 目标检测面试常问问题总结
  17. 如何成为月薪5W的数据产品经理?
  18. 360金融第一季度财报:收入32亿,疫情极限测试下走出的优质公司
  19. 关于电磁转矩这篇文章不错
  20. arccatalog点要素显示不完_西安周边隐秘绝美民宿大盘点:再不进山逛吃避暑,夏天就要过完了...

热门文章

  1. python中的栈结构_Python可以实现栈的结构吗
  2. 2d的公式_旋转之二 - 三维空间中的旋转:罗德里格旋转公式
  3. java图形化界面设置焦点_如何在更新窗口时防止Java图形程序窃取焦点?
  4. 数学--数论---P4718 Pollard-Rho算法 大数分解
  5. 想做硬件开发的人员必看
  6. 摄像头自动曝光相关基础知识
  7. caffe-windows10-matlab2014a安装配置6个问题
  8. 如何选择和计算滤波电容?--电容使用详述
  9. 使用python logging的配置
  10. 2019年那些匆忙入市的朋友现在都赚到钱了吗?