23.2.3 高速缓存依赖性(1)
使用Cache对象可以根据几个不同的依赖性,来存储和禁用高速缓存中的数据项。在ASP.NET 1.0/1.1中,只有如下依赖性:
基于文件的依赖性
基于键的依赖性
基于时间的依赖性
在使用Cache对象给高速缓存插入数据项时,用Insert方法设置依赖性,如下面的示例所示:
Duration属性定义了页面在高速缓存中的保存时间(秒)。VaryByParam属性确定高速缓存页面输出的版本。根据所需要的HTTP-POST或HTTP-GET响应可以生成不同的响应。除了OutputCache指令的属性之外,ASP.NET还包含VaryByHeader、VaryByCustom、VaryByControl和Location属性。另外,Shared属性也会影响UserControl,如后面所述。
ASP.NET中的高速缓存实现为一个HttpModule,它通过ASP.NET辅助进程监听所有HttpRequest。OutputCacheModule监听应用程序的ResolveRequestCache和UpdateRequest Cache事件,处理高速缓存的请求和失败,返回高速缓存的HTML,如果需要,绕过页面处理程序。
1. VaryByParam属性
VaryByParam属性可以指定哪些QueryString参数会高速缓存页面的新版本:
Cache.Insert("DSN", connectionString, _New CacheDependency(Server.MapPath("myconfig.xml"))) |
在所引用的数据项发生变化时使用依赖性,就从内存中删除了该数据项的高速缓存。
高速缓存依赖性在ASP.NET 2.0中进行了改进,添加了AggregateCacheDependency类、可扩展的CacheDependency类,还可以创建定制的CacheDependency类。详见下面的内容。
1. AggregateCacheDependency类
AggregateCacheDependency类类似于CacheDependency类,但它可以使用不同类型的依赖性,建立与高速缓存中的数据项的关联。例如,如果XML文件中有一个高速缓存的数据项,还从SQL数据库表中获得了信息,就可以创建一个AggregateCacheDependency,其中为每个子依赖性插入一个CacheDependency对象。为此,要调用Cache.Insert,添加AggregateCacheDependency实例,如下所示:
Dim agg as new AggregateCacheDependency()agg.Insert(New CacheDependency(Server.MapPath("myconfig.xml")))agg.Insert(New SqlCacheDependency("Northwind", "Customers"))Cache.Insert("DSN", connectionString, agg) |
注意,要和不同类型的CacheDependency类一起使用。如果只想给一个高速缓存的数据项与多个文件建立关联,可以使用CacheDependency的一个重载版本,如下所示:
VBCache.Insert("DSN", yourObject, _ New System.Web.Caching.CacheDependency( _ New String() _ { _ Server.MapPath("foo.xml"), _ Server.MapPath("bar.xml") _ } _ ) _ )C#Cache.Insert("DSN", yourObject, new System.Web.Caching.CacheDependency(new string[] { Server.MapPath("foo.xml"), Server.MapPath("bar.xml") })); |
AggregateCacheDependency类支持扩展以前的密封类CacheDependency,可以使用这个新特性创建定制的CacheDependency。
2. 非密封的CacheDependency类
在ASP.NET 2.0中,高速缓存的一个重大变化是重新修订了CacheDependency类,它现在是不密封的(即可以重写)。现在可以创建继承于CacheDependency的类,建立更精细的依赖性,而不限于过去的Time、Key和File依赖性。
在创建自己的高速缓存依赖性时,可以为Web服务数据、仅用于午夜的依赖性和文件中的文本字符串变化等添加过程。我们创建的依赖性没有任何限制。CacheDependency类的非密封性允许指定高速缓存中的数据项何时需要禁用。
有了CacheDependency类的非密封性,ASP.NET小组建立了一个新的SQL Server高速缓存依赖性:SqlCacheDependency。SqlCacheDependency是ASP.NET1.0/1.1开发人员最需要的高速缓存功能。在高速缓存因底层SQL Server的表发生变化而无效时,我们会立即知道。
CacheDependency类现在不是密封的,所以可以派生出定制的CacheDependencies类,如下一节所述。
转载于:https://www.cnblogs.com/33568639/archive/2008/12/29/1364733.html
23.2.3 高速缓存依赖性(1)相关推荐
- .net高速缓存(鉴)
要利用asp.net2.0中的新SQL Server高速缓存依赖性,必须SQL Server数据库支持该功能.可使用C:\Windows\Microsoft .NET\Framework\V2.0XX ...
- mysql的学生选课表_50个常用sql语句 网上流行的学生选课表的例子
50个常用sql语句 网上流行的学生选课表的例子 更新时间:2012年06月26日 18:32:29 作者: 这篇文字在网上被转载烂了,里面有些sql适合用在应用系统里,有些"报表&qu ...
- JAVA中的GridView每一个赋值,在ASP.NET 2.0中操作数据之六十二:GridView批量更新数据...
导言: 在前面的教程,我们对数据访问层进行扩展以支持数据库事务.数据库事务确保一系列的操作要么都成功,要么都失败.本文我们将注意力转到创建一个批更新数据界面. 在本文,我们将创建一个GridView控 ...
- Out of memory, OOM killer输出信息分析
当out of memory发生时,out_of_memory函数会选择一个内核认为犯有分配过多内存 "罪行"的进程,并杀死该进程. 这就有很大的几率腾出较多的空闲页,然后再跳转回 ...
- 2-3 计算机的主存储器和辅助存储器及高速缓存
主存储器-内存 RAM(随机存取存储器:Random Access Menory) RAM通过电容存储数据,必须隔一段时间刷新一次 如果掉电,那么一段时间后将丢失所有数据 辅助存储器-磁盘 表面是可磁 ...
- 《预训练周刊》第23期:Smart Bird:解决变换器性能瓶颈的新方法、Prompt:如何提升预训练模型的迁移效果...
No.23 智源社区 预训练组 预 训 练 研究 观点 资源 活动 关于周刊 超大规模预训练模型是当前人工智能领域研究的热点,为了帮助研究与工程人员了解这一领域的进展和资讯,智源社区整理了第23期&l ...
- [译] 沙箱中的间谍 - 可行的 JavaScript 高速缓存区攻击
原文 The Spy in the Sandbox – Practical Cache Attacks in Javascript 相关论文可在 https://github.com/wyvernno ...
- 23种设计模式整体详解
设计模式分为23种,每种都不是独立的,每种间都有联系: 下面从意图和使用性两方面详细描述每一种设计模式. 1.工厂模式(Factory) 意图 定义一个用于创建对象的接口,让子类决定实例化哪一个类.F ...
- Drupal的高速缓存配置APC
APC安装 yum install pcre pcre-devel pecl install apc PHP加载APC vi /etc/php.ini 加入内容 extension = apc.so ...
最新文章
- linux排序语言,Linux sort 排序命令uniq去重复行
- shader 编程入门(一)
- pwn学习总结(五) —— 堆溢出经典题型整理
- AngularJS双向数据绑定实例
- 中餐菜单分类名称创意_外卖运营小知识:优化外卖菜单,挽回店铺亏损
- SPI、I2C、UART三种串行总线协议的区别和SPI接口介绍(转)
- aes 加密_AES加密的安全问题
- 【翻译】New Lane Model and Distance Transform for Lane Detection and Tracking
- 简述hdfs工作原理_HDFS原理概念扫盲
- 【学习笔记】尚硅谷大数据项目之Flink实时数仓---DWM层
- [渝粤教育] 西南科技大学 高等数学2 在线考试复习资料
- 各地大厂名单(一二线城市知名公司)
- 修改微信聊天记录保存位置
- 域名注册查询批量筛选工具
- 重庆大学计算机学院张敏,张敏(安徽大学生命科学学院院长)_百度百科
- php的样式怎么设置字体大小,css中如何改变字体大小
- 涉密计算机外送维修,涉密计算机及涉密介质维修
- 数据库系统概论---绪论
- 站内搜寻引擎 php mysql_迅搜(xunsearch) - 开源免费中文全文搜索引擎|PHP全文检索|mysql全文检索|站内搜索...
- Ubuntu中安装Qt
热门文章
- 王者荣耀最难选择题2选1,刺痛cos虞姬,还是北极星露脸?我选一
- 金铲铲之战高峰期1万人排队,LOL手游如果公测会怎样?
- AI创想秀,邂逅“华为云ModelArts”征文大赛——第一次收官
- sharePoint查看与更改用户登录账号
- 魔兽 如何屏蔽F1键弹出帮助菜单
- [转]java构造方法的访问修饰符
- hbase shell命令_Hbase的简单命令使用
- 华为鸿蒙系统首发设备,华为鸿蒙系统首发设备曝光!不是手机
- ise的时钟ip核_ISE的IP核clocking wizard使用和例化
- linux当前时间 按格式化,Linux下date命令,格式化输出,时间设置