为ASP_NET应用程序启用SQL缓存
步骤一:
sql数据库必须开启ServiceBroker服务,首先检测是否已经启用ServiceBroker,检测方法:
SELECT DATABASEPROPERTYEX('dbName','IsBrokerEnabled') --1表示已经启用,0表示未启用
如果是创建的新数据库,默认是已启用(1)。如果还原数据库,默认是未启用(0)。
步骤二:
如果ServiceBroker没有启用,使用下面语句启用:
ALTER DATABASE dbName SET ENABLE_BROKER;
此行此语句时有可能时间会很长,对此可以重启SQL查询编辑再执行以上语句。
步骤三:
如果使用的是SQL Server 2005/2008版本数据库,只需在Page_Load或者Application_Start使用如下语句即可启用ASP.NET对应的SQL缓存:
SqlCacheDependencyAdmin.EnableNotifications(ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString);
对于使用更低版本需要使用aspnet_regsql来配置。
另外,在最初时使用的是如下语句:
String[] tables = ConfigurationManager.AppSettings["CacheDataTable"].Split(',');
SqlCacheDependencyAdmin.EnableTableForNotifications(ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString, tables);
在使用上面的语句始终报异常:没有为 SQL 缓存通知启用数据库(不知道为什么)
步骤四:
通过以上步骤就可以编写相应的缓存代码,代码如下:
public class TableDependency
{
protected char[] configurationSeparator = new char[] { ',' }; protected AggregateCacheDependency dependency = new AggregateCacheDependency(); protected TableDependency(string configKey)
{
string dbName = ConfigurationManager.AppSettings["CacheDatabaseName"];//要缓存的数据库名称
string tableConfig = ConfigurationManager.AppSettings[configKey];//从配置文件中获取需要缓存的表,以','分隔
string[] tables = tableConfig.Split(configurationSeparator); foreach (string tableName in tables)
dependency.Add(new SqlCacheDependency(dbName, tableName));//把表以及对应的数据库添加到AggregateCacheDependency对象中
} public AggregateCacheDependency GetDependency()
{
return dependency;
}
}
String PHONE_HEAD_KEY="User_{0}";
String cacheKey = String.Format(PHONE_HEAD_KEY, ID);//缓存键
String data = (String)HttpRuntime.Cache[cacheKey];//首先从缓存来获取相应的数据
if (data == null)
{
//从数据库获取
data = db.GetData();
//获取一个AggregateCacheDependency对象,UserTableDependency保存的是表
AggregateCacheDependency cd = new TableDependency("UserTableDependency").GetDependency();
//添加到缓存
HttpRuntime.Cache.Add(cacheKey, data, cd, DateTime.Now.AddHours(10), Cache.NoSlidingExpiration, CacheItemPriority.High, null);
}
Response.Write(data);
为ASP_NET应用程序启用SQL缓存的更多相关文章
- 搭建LNMP发布ecshop系统及压测启用opcache缓存与否的情况
安装环境:CENTOS6.5,nginx1.6.2,php-5.5.18,mysql5.5.38 在安装软件之前安装epel源,就可以直接用yum安装libmcrypt,mhash,mcrypt等ph ...
- 8 -- 深入使用Spring -- 5...1 启用Spring缓存
8.5.1 启用Spring缓存 Spring配置文件专门为缓存提供了一个cache:命名空间,为了启用Spring缓存,需要在配置文件中导入cache:命名空间. 导入cache:命名空间之后,启用 ...
- 微信小程序之本地缓存(十)
[未经作者本人同意,请勿以任何形式转载] 目前,微信给每个小程序提供了10M的本地缓存空间(哎哟妈呀好大) 有了本地缓存,你的小程序可以做到: 离线应用(已测试在无网络的情况下,可以操作缓存数据) 流 ...
- 黑马程序员+SQL基础(上)
黑马程序员+SQL基础 ---------------<a href="http://edu.csdn.net"target="blank">ASP ...
- WCF 无法激活服务,因为它不支持 ASP.NET 兼容性。已为此应用程序启用了 ASP.NET 兼容性
无法激活服务,因为它不支持 ASP.NET 兼容性.已为此应用程序启用了 ASP.NET 兼容性.请在 web.config 中关闭 ASP.NET 兼容性模式,或将 AspNetCompatibil ...
- 怎样启用SQL SERVER混合身份验证方式
转载:http://jingyan.baidu.com/article/380abd0aa8f2311d90192cd0.html 大家都知道sql server 有两种登录验证方式,即sql ser ...
- .NET CORE学习笔记系列(4)——ASP.NET CORE 程序启用SSL
一.什么是SSL? 1.概念: SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数 ...
- Spring 整合 Hibernate 时启用二级缓存实例详解
写在前面: 1. 本例使用 Hibernate3 + Spring3: 2. 本例的查询使用了 HibernateTemplate: 1. 导入 ehcache-x.x.x.jar 包: 2. 在 a ...
- 解决 SQL Server 所有帐号无 sysadmin 权限,且未启用 SQL Server 身份验证,sa 帐号也未启用的问题
解决 未启用 SQL Server 身份验证 的问题: 1. 运行 regedit,进入注册表编辑器 2. 打开:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Micro ...
随机推荐
- Web组件的三种关联关系
Web应用程序如此强大的原因之一是它们能彼此链接和聚合信息资源.Web组件之间存在三种关联关系: ● 请求转发 ● URL重定向 ● 包含 存在以上关联关系的Web组件可以是JSP或Servle ...
- Java 循环语句及流程控制语句
java循环语句while与do-while 一 while循环 while循环语句和选择结构if语句有些相似,都是根据条件判断来决定是否执行大括号内的执行语句. 区别在于,while语句会反复地进行 ...
- 2020-05-25:MQ应用场景、Kafka和rabbit区别?kafka为什么支撑高并发? 来自
福哥答案2020-05-25: 应用场景:解耦.异步.削峰.区别如下:特性 ActiveMQ RabbitMQ RocketMQ Kafka单机吞吐量 万级,比 RocketMQ.Kafka 低一个数 ...
- python基本数据类型(—)
数字 int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位系统上,整数的位数为64位,取值范围为-2** ...
- 解析Class文件之创建InstanceKlass对象
ClassFileParser::parseClassFile()方法会将解析Class文件的大部分结果保存到instanceKlass对象中.创建instanceKlass对象的代码如下: int ...
- centos7下的redis集群模式
1.先安装好单机版的redis 2.Reids安装包里有个集群工具,要复制到/usr/local/bin里去 cd /home/redis/redis-4.0./src ls - cp redis-t ...
- JDBC API阐述
JDBC API JDBC API 是一系列的接口,它使得应用程序能够进行数据库联接,执行SQL语句,并且得到返回结果. Driver 接口 Java.sql.Driver 接口是所有 JDBC 驱动 ...
- linux tmpfs及消耗内存脚本
一.tmpfs介绍 tmpfs是一种虚拟内存文件系统,正如这个定义它最大的特点就是它的存储空间在VM里面VM是由linux内核里面的vm子系统管理的东西,现在大多数操作系统都采用了虚拟内存管理机制VM ...
- WordCount( Java )
Github项目地址:https://github.com/Sabot1203/WordCount 一. 题目描述 实现一个简单而完整的软件工具(源程序特征统计程序). 进行单元测试.回归测试.效能测 ...
- 玩转Spring——Spring AOP
什么是AOP?AOP(Aspect Oriented Programming )被称为面向切面编程AOP利用一种称为"横切"的技术,剖解开封装的对象内部,并将那些影响了多个类的公共 ...