.NET 数据库缓存依赖策略实现

处理大型门户网站 一般都需要 使用缓存技术这个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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/257570.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计模式之PHP项目应用——单例模式设计Memcache和Redis操作类

1 单例模式简单介绍 单例模式是一种经常使用的软件设计模式。在它的核心结构中仅仅包括一个被称为单例类的特殊类。通过单例模式能够保证系统中一个类仅仅有一个实例并且该实例易于外界訪问。从而方便对实例个数的控制并节约系统资源。假设希望在系统中某个类的对象仅仅能存…

【转】康拓展开

———本文转自&#xff1a;http://www.cnblogs.com/1-2-3/archive/2011/04/25/generate-permutation-part2.html 1、康托展开  康托展开的公式是 Xan*(n-1)!an-1*(n-2)!...ai*(i-1)!...a2*1!a1*0! 其中&#xff0c;ai为当前未出现的元素中是排在第几个&#xff08;从0开始&a…

java jni so_java 用jni调用so全过程

这几天一直在研究JNI的开发过程&#xff0c;顺便把NDK环境搭建一起总结下。在windows环境下开发jni需要c/c编译器的支持&#xff0c;网络上我看很多人使用cygwin。呵呵我不是很喜欢使用它&#xff0c;感觉安装起来挺麻烦的。我使用GNUStep&#xff0c;下载地址http://www.gnust…

Linux下安装jdk

参考于&#xff1a;http://www.cnblogs.com/caosiyang/archive/2013/03/14/2959087.html 一、准备阶段 ①下载jdk-6u45-linux-i586.bin&#xff0c;通过xftp上传至Linux系统中 ②在命令行执行 ./jdk-6u45-linux-i586.bin&#xff0c;生成目录jdk1.6.0_45 ③移动到/usr/share下&…

为Tiny4412设备驱动在proc目录下添加一个可读版本信息的文件

http://blog.csdn.net/morixinguan/article/details/77808088 上节&#xff0c;我们明白了proc文件系统的作用&#xff0c;接下来我们在友善之臂已经写好的led驱动的基础上&#xff0c;在proc目录下创建一个文件夹&#xff0c;然后加入led驱动的版本信息读取。 我们在init函数的…

java audiorecord_Android 录音实现(AudioRecord)

上一篇文章介绍了使用 MediaRecorder 实现录音功能 Android录音实现(MediaRecorder) &#xff0c;下面我们继续看看使用 AudioRecord 实现录音功能。AudioRecord首先看看Android帮助文档中对该类的简单概述: AndioRecord 类的主要功能是让各种 Java 应用能够管理音频资源&#…

《架构探险——从零开始写Java Web框架》这书不错,能看懂的入门书

这书适合我。 哈哈&#xff0c;结合 以前的知识点&#xff0c;勉强能看懂。 讲得细&#xff0c;还可以参照着弄出来。 希望能坚持 完成啦。。。 原来&#xff0c;JSTL就类似于DJANGO中的模板。 而servlet类中的res,req&#xff0c;玩了DJANGO就觉得好熟悉啦。。。&#xff1a;&…

java 生成 tar.gz_一文教您如何通过 Java 压缩文件,打包一个 tar.gz Filebeat 采集器包...

一、背景最近&#xff0c;小哈主要在负责日志中台的开发工作, 等等&#xff0c;啥是日志中台&#xff1f;俺只知道中台概念&#xff0c;这段时间的确很火&#xff0c;但是日志中台又是用来干啥的&#xff1f;这里小哈尽量地通俗的说下日志中台的职责&#xff0c;再说日志中台之…

poj1741 Tree 点分治

入门题&#xff0c;算是对树分治有了初步的理解吧。 #include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> #include<vector> #define REP(i,a,b) for(int ia;i<b;i) #define MS0(a) memset(…

深入理解 ajax_xhr 对象

2019独角兽企业重金招聘Python工程师标准>>> ajax技术的核心是XMLHttpRequest对象(简称XHR)&#xff0c;这是由微软首先引入的一个特性&#xff0c;其他浏览器提供商后来都提供了相同的实现。 IE5是第一款引入XHR对象的浏览器。在IE5中&#xff0c;XHR对象是通过MSX…

组函数及分组统计

分组函数 SQL中经常使用的分组函数 Count(): 计数 Max()&#xff1a;求最大值 Min()&#xff1a;求最小值 Avg()&#xff1a;求平均值 Sum()&#xff1a;求和 -- 统计emp表中的人数 select count(*) from emp; -- 统计获得奖金的人数 select count(comm) from emp;-- 求全部雇…

两张神图介绍python3和 2.x与 3.x 的区别

有感与第一张图, 做了第二张图.转载于:https://www.cnblogs.com/Vito2008/p/5280393.html

Factorial Trailing Zeroes

https://leetcode.com/problems/factorial-trailing-zeroes/ Given an integer n, return the number of trailing zeroes in n!. Note: Your solution should be in logarithmic time complexity. 解题思路&#xff1a; 再次遇见最讨厌的Math题。 开始的思路&#xff0c;结尾的…

百年难得一见!阿里园区惊现双月争辉奇观!

9月3日晚杭州阿里园区上空突然惊现“双月争辉”奇观&#xff0c;引发路人、员工争相拍照留念狂潮。记者随后深入园区探访&#xff0c;近距离观察“双月奇观”。当晚&#xff0c;热心观众王先生提供线索。王先生路过杭州阿里巴巴园区时&#xff0c;听到有人呼喊&#xff1a;“快…

Spring 事务配置5种方式

Spring配置文件中关于事务配置总是由三个组成部分&#xff0c;分别是DataSource、TransactionManager和代理机制这三部分&#xff0c;无论哪种配置方式&#xff0c;一般变化的只是代理机制这部分。 DataSource、TransactionManager这两部分只是会根据数据访问方式有所变化&…

黑客宣称掌握了600多万个Instagram账号的信息

据外媒报道&#xff0c;上周早些时候&#xff0c;歌手兼演员赛琳娜戈麦斯因Instagram账号被盗而发出大量来自前男友贾斯汀比伯的裸照。不过当时很快赛琳娜就拿回了对账号的控制权并删掉了这些裸照。就在大家以为这件事情已经平息的时候&#xff0c;Instagram却被曝光了一个极为…

奇怪吸引子---Aizawa

奇怪吸引子是混沌学的重要组成理论&#xff0c;用于演化过程的终极状态&#xff0c;具有如下特征&#xff1a;终极性、稳定性、吸引性。吸引子是一个数学概念&#xff0c;描写运动的收敛类型。它是指这样的一个集合&#xff0c;当时间趋于无穷大时&#xff0c;在任何一个有界集…

安装SQL2012出现[HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD)设置为 1

本人安装SQL2012出现这个错误&#xff0c;找了三天三夜&#xff0c;终于把问题找出来&#xff0c;共享给有需要的人们&#xff0c;不用重新换系统 错误如下: 1&#xff0c;此问题是系统.net Framework版本冲突&#xff0c;首先下载.net Framework清理工具&#xff08;如:cleanu…

java限制发送短信次数_使用java发送短信验证码码,出现流量限制怎么办?急急急...

注册登录后需要企业认证,直接在某度上找一张清晰有红章的企业营业执照,注意要细心点,要看看有没有水印。我第一次就没注意上传了一张有水印的营业执照&#xff0c;从此这个账号再也没有审核通过了&#xff0c;后面只能换个账号。都是后台人工审核的&#xff0c;比较严格。如果时…

GDKOI2015 Day2

P1 题目描述&#xff1a; 给出一个二分图&#xff0c;选择互不相交的边&#xff0c;使得边覆盖的点权和最大。 solution&#xff1a; 简单DP&#xff0c;用树状数组维护最大值。 时间复杂度&#xff1a;$O(n \log n) $ P2 题目描述&#xff1a; 给出N个或黑或白的元素&#xff…