ASP.NET缓存中Cache过期的三种策略
我们在页面上添加三个按钮并双击按钮创建事件处理方法,三个按钮使用不同的过期策略添加ASP.NET缓存。
<asp:Button ID="btn_InsertNoExpirationCache" runat="server" Text="插入永不过期缓存" |
三个按钮的Click事件处理方法如下:
protected void btn_InsertNoExpirationCache_Click(object sender, EventArgs e) { DataSet ds = GetData(); Cache.Insert("Data", ds); } protected void btn_InsertAbsoluteExpirationCache_Click(object sender, EventArgs e) { DataSet ds = GetData(); Cache.Insert("Data", ds,null, DateTime.Now.AddSeconds(10), TimeSpan.Zero); } protected void btn_InsertSlidingExpirationCache_Click(object sender, EventArgs e) { DataSet ds = GetData(); Cache.Insert("Data", ds, null, DateTime.MaxValue, TimeSpan.FromSeconds(10)); } |
我们来分析一下这三种ASP.NET缓存过期策略。
◆永不过期。直接赋值缓存的Key和Value即可
◆绝对时间过期。DateTime.Now.AddSeconds(10)表示缓存在10秒后过期,TimeSpan.Zero表示不使用平滑过期策略。
◆变化时间过期(平滑过期)。DateTime.MaxValue表示不使用绝对时间过期策略,TimeSpan.FromSeconds(10)表示缓存连续10秒没有访问就过期。
在这里,我们都使用了Insert()方法来添加缓存。其实,Cache还有一个Add()方法也能向缓存中添加项。在不同之处于Add()方法只能添加缓存中没有的项,如果添加缓存中已有的项将失败(但不会抛出异常),而Insert()方法能覆盖原来的项。
注意:和Application不同,这里不需要使用在插入ASP.NET缓存的时候进行锁操作,Cache会自己处理并发。
转载于:https://www.cnblogs.com/lonelyxmas/p/4884712.html
ASP.NET缓存中Cache过期的三种策略相关推荐
- ASP.NET Core 中做集成测试的三种方案
学习·进步 老张的哲学 不定期更新的 日常 在平时的开发中,我们很少会关注到测试的问题,更别说集成测试了,除非是公司有硬性要求或者是自己的开源项目中,为了整体架构的完整性,需要用测试来做辅助点缀,而更 ...
- ASP.NET Core 中文文档 第三章 原理(5)错误处理
原文:Error Handling 作者:Steve Smith 翻译:谢炀(Kiler) 校对:高嵩(jack2gs).何镇汐 当你的ASP.NET应用发生错误的时候, 你可以采用本文所述的各种方法 ...
- ASP.NET Core 中文文档 第三章 原理(3)静态文件处理
原文:Working with Static Files 作者:Rick Anderson 翻译:刘怡(AlexLEWIS) 校对:谢炀(kiler398).许登洋(Seay).孟帅洋(书缘) 静态文 ...
- asp.net服务器端跳转页面的三种方法
asp.net服务器端跳转页面的三种方法 1.Response.Redirect这个跳转页面的方法跳转速度不快,因为它要走2次回发(postback). 它可以跳转到任何页面,没有站点页面限制(可以由 ...
- centos 卸载软件_一篇看懂!详解-Linux系统中安装软件的三种方法
Linux系统中安装软件的三种方法 注:本文主要以CentOS为例介绍常用的安装方式,其他版本linux在文章底部 Linux系统中怎么安装软件,首先说一下应用程序与系统命令的区别: 1.文件位置 系 ...
- Android中夜间模式的三种实现方式
参考:https://www.jianshu.com/p/f3aaed57fa15 在本篇文章中给出了三种实现日间/夜间模式切换的方案: 使用 setTheme 的方法让 Activity 重新设置主 ...
- 在JavaScript中重复字符串的三种方法
In this article, I'll explain how to solve freeCodeCamp's "Repeat a string repeat a string" ...
- oracle if=,oracle中if/else的三种实现方式详解
1.标准sql规范 1.单个IF IF v=... THEN END IF; 2.IF ... ELSE IF v=... THEN ELSE t....; END IF; 3.多个IF IF v=. ...
- Django中Model继承的三种方式
Django中Model继承的三种方式 Django中Model的继承有三种: 1.抽象继承 2.多表继承 3.proxy model(代理model) 1.抽象继承 第一种抽象继承,创建一个通用父类 ...
最新文章
- 我是村里唯一的PM,哈哈哈…
- css圆在中心根据宽度缩放_根据CSS中的容器宽度重新缩放字体
- Eclipse 汉化包下载安装
- [USACO13NOV]Farmer John has no Large Brown Cow【状压 / 模拟】
- 多功能pdf编辑器PDF Office Max for mac
- 3PHP如何用PDO的连接方式方式导出mysql数据
- armv6 armv7 armv7s架构的区别
- 转载--柯尔莫哥洛夫
- 人员招聘与培训实务【1】
- “绿水青山就是金山银山”
- DSCP(Differentiated Service Codepoint,差分服务代码点)
- 脑起搏器治疗帕金森病的原理
- Y-Combinator
- 如何打通AD、企业微信、飞书、钉钉等社交账号及内外网应用身份?
- 利用python将单个Excel文件转换为PDF
- 洛谷P2056 采花
- BZOJ 4808 二分图最大独立集
- mysql只能导出65535条,Mysql报Rowsizetoolarge65535的原因及解决方法
- 三分钟构建自动化运维平台-nightingale(夜莺)
- Mac中解决CSV乱码问题
热门文章
- html事件中写js,html标签中绑定触发事件与js中绑定触发事件写法上的区别
- .NET也可以跨平台 Mono 2.10发布
- LeetCode简单题目(#225 #226 #231 #232 #234)-5道(栈、队列、树、数字)
- 调用存储过程时报错:Illegal mix of collations
- 2021-10-21 pgRouting
- docker镜像与容器操作流程
- 容器大小_C++复习篇(7)序列式容器vector
- 利用marked.js写个简单Markdown编辑器(1)
- Discuz3.2开启图片列表显示教程
- 分享用Adobe Air向iOS移植游戏的经验