<%@ OutputCache Duration="20" VaryByParam="none" %>  //缓存整个页面,时间为20秒,

<%@ OutputCache Duration="20" VaryByParam="id" %>    //根据id来缓存 (view.aspx?id=1  ,view.aspx?id=2)每个详细页面缓存一个

数据源缓存:

1.设置 objectDataSource的 CacheDuration="20"//时间

2.设置objectDataSource的 CacheExpirationPolicy="Absolute"

3.EnableCaching=True

3.自定义缓存

 System.Web.Caching 命名空间提供用于缓存服务器上常用数据的类。这包括 Cache 类,该类是一个使您可以存储任意数据对象(如哈希表和数据集)的词典。它还为这些对象提供到期功能,并提供使您可以添加和移除对象的方法。您还可以添加依赖于其他文件或缓存项的对象,并在从 Cache 中移除对象时执行回调以通知应用程序。

System.Web.Caching.Cache 用于实现 Web 应用程序的缓存。

对于每个应用程序域均创建该类的一个实例,并且只要对应的应用程序域保持活动,该实例便保持有效。有关此类实例的信息通过 HttpContext 对象的 Cache 属性或 Page 对象的 Cache 属性来提供。

方法:

  1. Add

    将指定项添加到 Cache 对象,该对象具有依赖项、过期和优先级策略以及一个委托(可用于在从 Cache 移除插入项时通知应用程序)。如果 Cache 中已保存了具有相同 key 参数的项,则对此方法的调用将失败。若要使用相同的 key 参数改写现有的 Cache 项,请使用 Insert 方法.

  2. Insert

    向 Cache 对象插入项。使用此方法的某一版本改写具有相同 key 参数的现有 Cache 项。

  3. Remove

    从应用程序的 Cache 对象移除指定项。

  4. Item / Get

提供通过Name找到Value的方法

-----------------------------------------------------------------------------------------------------------------------------------------------

一下是从微软网上MSDN找到的一篇有关Cache的说明, 内容差不多,但是要更加具体一些:

您可以使用三种不同的技术将项添加到 Cache 对象中。根据应用程序要求的不同,您的选择可以从简单到复杂。

如果要利用 Cache 所提供的清理、到期时间和依赖项支持,则必须使用 Cache.Insert 方法或 Cache.Add 方法。

注意   AddInsert 方法具有相同的签名,但它们之间存在细微的差别。首先,调用 Add 方法返回表示缓存项的对象,而调用 Insert 方法不是。其次,如果您调用这些方法并将已存储在 Cache 中的某个项添加到 Cache 中,那么它们的行为是不同的。Insert 方法替换该项,而Add 方法失败。

通过指定其键和值将项添加到缓存中

  • 通过指定项的键和值,您可以像将项添加到字典中一样将其添加到缓存中。下面的代码将文本框的当前 Value 属性添加到 Cache 中。

    [Visual Basic]Cache("txt1") = txtName.value[C#]Cache["txt1"] = txtName.value;

通过使用 Insert 方法将项添加到缓存中

  • 重载 Insert 方法,允许您定义正在使用的版本的参数的值。例如,若要只添加项的键和值,则使用下面的代码。

    [Visual Basic]Cache.Insert("MyData1", connectionString)[C#]Cache.Insert("MyData1", connectionString);

使用 Add 方法将项添加到缓存中

  • Add 方法与 Insert 方法具有相同的签名,但它返回表示您所添加项的对象。

    [Visual Basic]Cache.Add("MyData1", connectionString)[C#]Cache.Add("MyData1", connectionString);

这两种方法都使您能够在很大程度上控制在 Cache 中保留项的条件。两种方法都支持使缓存的项依赖于外部文件或目录、Cache 中的其他键或任意一个的数组。将设有依赖项的项添加到 Cache 中将创建 CacheDependency 类的实例,它跟踪对您定义的依赖项的更改。如果这些依赖项的任何一个发生更改(包括被删除或移动),则将与该依赖项关联的项从 Cache 中移除。

将设有依赖项的项添加到缓存中

  • 您可以使用 AddInsert 方法中的 dependencies 参数将设有依赖项的项添加到 Cache 中。下面的示例演示使用 Insert 方法将设有依赖项(在 XML 文件上)的项添加到 Cache 中。

    [C#]Cache.Insert("MyData1", connectionString, new CacheDependency(Server.MapPath(\\myServer\myConfig.xml)));[Visual Basic]Cache.Insert("MyData1", connectionString, new CacheDependency(Server.MapPath(\\myServer\myConfig.xml)))

将设有到期策略的项添加到缓存中

  • 您可以使用 absoluteExpiration parameter 参数和 slidingExpiration 参数将设有到期策略的项添加到 Cache 中。您可以定义绝对过期时间或弹性过期时间,但不能同时定义两者。在使用上述参数之一定义到期策略时,必须将另一个参数设置为零。Cache 类定义了两个自动执行该操作的字段:NoAbsoluteExpirationNoSlidingExpiration。当定义绝对或弹性过期时间时,只要将适当的参数设置为其相应的字段值即可。下面的示例使用 Insert 方法将设有两分钟绝对到期时间的项添加到 Cache 中。

    [C#]Cache.Insert("MyData1", connectionString, null, DateTime.Now.AddMinutes(2),  NoSlidingExpiration);[Visual Basic]Cache.Insert("MyData1", connectionString, null, DateTime.Now.AddMinutes(2),  NoSlidingExpiration)

    下面的代码使用 Insert 方法将设有 30 秒弹性过期时间的项添加到 Cache 中。

    [C#]Cache.Insert("MyData1", connectionString, null, NoAbsoluteExpiration, TimeSpan.FromSeconds(30));[Visual Basic]Cache.Insert("MyData1", connectionString, null, NoAbsoluteExpiration, TimeSpan.FromSeconds(30))

    注意    当设置绝对到期时间时,请使用 DateTime 结构。当设置弹性过期时间时,请使用 TimeSpan 结构。另外,如果您创建的弹性过期时间小于零或大于一年,则将引发 ArgumentOutOfRangeException 类。

您还可以使用 AddInsert 方法通过在 CacheItemPriority 枚举中指定值定义缓存项的相对重要性。当 Web 服务器进行清理以释放内存时,这些相对优先级会对它有所帮助。Web 服务器会在移除具有较高优先级的项之前先从 Cache 中移除具有较低优先级的项。

将设有优先级设置的项添加到缓存中

  • 您可以通过在 AddInsert 方法上使用 priority 参数将设有优先级设置的项添加到 Cache 中。下面的示例使用 Add 方法将 priorityHigh 的项添加到 Cache 中。

    [C#]Cache.Add("MyData1", connectionString, null, NoAbsoluteExpiration, TimeSpan.FromSeconds(30), CacheItemPriority.High, null);[Visual Basic]Cache.Add("MyData1", connectionString, null, NoAbsoluteExpiration, TimeSpan.FromSeconds(30), CacheItemPriority.High, null)

这些方法还允许在项从缓存中移除时,使用 CacheItemRemovedCallback 委托通知应用程序。有关完整的示例,请参见从缓存中删除项时通知应用程序。

转载于:https://blog.51cto.com/937ii8759/1410814

页面缓存 ,数据源缓存,自定义缓存相关推荐

  1. ❤️缓存集合(一级缓存、二级缓存、缓存原理以及自定义缓存—源码+图文分析,建议收藏) ❤️

    ❤️缓存集合(一级缓存.二级缓存.缓存原理以及自定义缓存-源码+图文分析,建议收藏) ❤️ 查询 : 连接数据库 ,耗资源!一次查询的结果,给他暂存在一个可以直接取到的地方!--> 内存 : 缓 ...

  2. Mybatis | Mybatis 一级缓存、二级缓存、三级自定义缓存(Redis)

    Mybatis 一级缓存.二级缓存.三级自定义缓存Redis实现 一.Mybatis 缓存 二.一级缓存 SqlSession级别 1.如何开启一级缓存 2.什么时候清除缓存? 3.什么时候缓存失效? ...

  3. 缓存设计方案 你了解吗 SpringBoot 快速集成实现一级缓存Redis和二级缓存Caffeine 可自定义扩展

    项目背景: 在系统初期为了实现业务的快速增长.对系统没有很好的设计.后期想实现缓存,提升应用系统的性能. 面临问题: 缓存配置混乱.系统微服务化基本上需要实现缓存.序列化方式不统一 研发效率低下.每次 ...

  4. Mybatis缓存 自定义缓存

    缓存 MyBatis 内置了一个强大的事务性查询缓存机制,它可以非常方便地配置和定制. 为了使它更加强大而且易于配置,我们对 MyBatis 3 中的缓存实现进行了许多改进. 默认情况下,只启用了本地 ...

  5. ASP.NET缓存 之 Web服务器缓存

    1.替换缓存 可以使用substitution动态更新缓存页 public static string GetTime(HttpContext context) { return DateTime.N ...

  6. java 项目做多级缓存_【开源项目系列】如何基于 Spring Cache 实现多级缓存(同时整合本地缓存 Ehcache 和分布式缓存 Redis)...

    一.缓存 当系统的并发量上来了,如果我们频繁地去访问数据库,那么会使数据库的压力不断增大,在高峰时甚至可以出现数据库崩溃的现象.所以一般我们会使用缓存来解决这个数据库并发访问问题,用户访问进来,会先从 ...

  7. SpringBoot中通过自定义缓存注解(AOP切面拦截)实现数据库数据缓存到Redis

    场景 若依前后端分离版本地搭建开发环境并运行项目的教程: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/108465662 基于上 ...

  8. springboot+mybatis集成自定义缓存ehcache用法笔记

    今天小编给大家整理了springboot+mybatis集成自定义缓存ehcache用法笔记,希望对大家能有所办帮助! 一.ehcache介绍 EhCache 是一个纯Java的进程内缓存管理框架,属 ...

  9. web页面上数据是否进行缓存要怎么判断_前端要知道的网络知识五:详细的介绍web缓存...

    Web缓存是可以自动保存常见文档副本的HTTP设备.当Web请求抵达缓存时,如果本地有"已缓存的"副本,就可以从本地存储设备而不是原始服务器中提取这个文档.本文将详细介绍缓存的相关 ...

最新文章

  1. 李飞飞团队最新论文:如何对图像中的实体精准“配对”?(附代码论文)
  2. 封装,抽象,继承,多态
  3. 前端传值后端接收不到_解决vue get请求传参后端接收不到参数值(java sptingboot)
  4. springboot 切换日志实现
  5. 51nod1551-集合交易【hall定理,最大权闭合图,网络流】
  6. 无状态会话的ejb_Java EE状态会话Bean(EJB)示例
  7. 安装在电脑上的网络测试软件,iperf3 网络测试工具
  8. Hive beeline连接hiveserver2报错:User: root is not allowed to impersonate root
  9. Qemu复现雄迈摄像头固件漏洞
  10. 怎么关闭他人计算机网络,远程关机在局域网中,怎样能关闭别人的电脑呢 – 手机爱问...
  11. uni-app 微信、支付宝APP支付流程
  12. selenium鼠标操作
  13. 如何写好一篇优质的网站内容
  14. 版图DRC The following products could not be licensed sufficiently:- Calibre Interactive
  15. Atmel_Arduino系列引脚图大全
  16. 学术研究入门,如何下载论文?
  17. 【DXP】更换原理图模板的方法
  18. 思博伦OpenFlow性能测试白皮书(上)
  19. 985毕业的“搬砖人”,从“挂科废材”到程序员,这样的意外崛起,他到底经历了什么?
  20. 在领悟到什么道理后,你的人生从此轻松了起来?

热门文章

  1. 设计模式的七大设计原则:其三:依赖倒转原则
  2. lucene可用中文分词IKAnalyzer,maven pom下载代码及配置文件
  3. 接口测试和性能测试的区别
  4. Linux磁盘分区详解(parted)
  5. 测试用例的八大设计方法
  6. 03-04 元素定位工具
  7. 7系统内部系统组件禁止休眠_海康监控系统平台设计思路(二)
  8. python创建实例属性_Python学习笔记__6.5章 实例属性和类属性
  9. 需求获取安排计划书_若想成功融资,商业计划书必须秀色可餐:餐饮业商业计划书模板...
  10. php读取剪贴板内容,js如何处理剪贴板的内容?js处理剪贴板的内容的方法