使用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)相关推荐

  1. .net高速缓存(鉴)

    要利用asp.net2.0中的新SQL Server高速缓存依赖性,必须SQL Server数据库支持该功能.可使用C:\Windows\Microsoft .NET\Framework\V2.0XX ...

  2. mysql的学生选课表_50个常用sql语句 网上流行的学生选课表的例子

    50个常用sql语句 网上流行的学生选课表的例子 更新时间:2012年06月26日 18:32:29   作者: 这篇文字在网上被转载烂了,里面有些sql适合用在应用系统里,有些"报表&qu ...

  3. JAVA中的GridView每一个赋值,在ASP.NET 2.0中操作数据之六十二:GridView批量更新数据...

    导言: 在前面的教程,我们对数据访问层进行扩展以支持数据库事务.数据库事务确保一系列的操作要么都成功,要么都失败.本文我们将注意力转到创建一个批更新数据界面. 在本文,我们将创建一个GridView控 ...

  4. Out of memory, OOM killer输出信息分析

    当out of memory发生时,out_of_memory函数会选择一个内核认为犯有分配过多内存 "罪行"的进程,并杀死该进程. 这就有很大的几率腾出较多的空闲页,然后再跳转回 ...

  5. 2-3 计算机的主存储器和辅助存储器及高速缓存

    主存储器-内存 RAM(随机存取存储器:Random Access Menory) RAM通过电容存储数据,必须隔一段时间刷新一次 如果掉电,那么一段时间后将丢失所有数据 辅助存储器-磁盘 表面是可磁 ...

  6. 《预训练周刊》第23期:Smart Bird:解决变换器性能瓶颈的新方法、Prompt:如何提升预训练模型的迁移效果...

    No.23 智源社区 预训练组 预 训 练 研究 观点 资源 活动 关于周刊 超大规模预训练模型是当前人工智能领域研究的热点,为了帮助研究与工程人员了解这一领域的进展和资讯,智源社区整理了第23期&l ...

  7. [译] 沙箱中的间谍 - 可行的 JavaScript 高速缓存区攻击

    原文 The Spy in the Sandbox – Practical Cache Attacks in Javascript 相关论文可在 https://github.com/wyvernno ...

  8. 23种设计模式整体详解

    设计模式分为23种,每种都不是独立的,每种间都有联系: 下面从意图和使用性两方面详细描述每一种设计模式. 1.工厂模式(Factory) 意图 定义一个用于创建对象的接口,让子类决定实例化哪一个类.F ...

  9. Drupal的高速缓存配置APC

    APC安装 yum install pcre pcre-devel pecl install apc PHP加载APC vi /etc/php.ini 加入内容 extension = apc.so ...

最新文章

  1. linux排序语言,Linux sort 排序命令uniq去重复行
  2. shader 编程入门(一)
  3. pwn学习总结(五) —— 堆溢出经典题型整理
  4. AngularJS双向数据绑定实例
  5. 中餐菜单分类名称创意_外卖运营小知识:优化外卖菜单,挽回店铺亏损
  6. SPI、I2C、UART三种串行总线协议的区别和SPI接口介绍(转)
  7. aes 加密_AES加密的安全问题
  8. 【翻译】New Lane Model and Distance Transform for Lane Detection and Tracking
  9. 简述hdfs工作原理_HDFS原理概念扫盲
  10. 【学习笔记】尚硅谷大数据项目之Flink实时数仓---DWM层
  11. [渝粤教育] 西南科技大学 高等数学2 在线考试复习资料
  12. 各地大厂名单(一二线城市知名公司)
  13. 修改微信聊天记录保存位置
  14. 域名注册查询批量筛选工具
  15. 重庆大学计算机学院张敏,张敏(安徽大学生命科学学院院长)_百度百科
  16. php的样式怎么设置字体大小,css中如何改变字体大小
  17. 涉密计算机外送维修,涉密计算机及涉密介质维修
  18. 数据库系统概论---绪论
  19. 站内搜寻引擎 php mysql_迅搜(xunsearch) - 开源免费中文全文搜索引擎|PHP全文检索|mysql全文检索|站内搜索...
  20. Ubuntu中安装Qt

热门文章

  1. 王者荣耀最难选择题2选1,刺痛cos虞姬,还是北极星露脸?我选一
  2. 金铲铲之战高峰期1万人排队,LOL手游如果公测会怎样?
  3. AI创想秀,邂逅“华为云ModelArts”征文大赛——第一次收官
  4. sharePoint查看与更改用户登录账号
  5. 魔兽 如何屏蔽F1键弹出帮助菜单
  6. [转]java构造方法的访问修饰符
  7. hbase shell命令_Hbase的简单命令使用
  8. 华为鸿蒙系统首发设备,华为鸿蒙系统首发设备曝光!不是手机
  9. ise的时钟ip核_ISE的IP核clocking wizard使用和例化
  10. linux当前时间 按格式化,Linux下date命令,格式化输出,时间设置