.NET4缓存过期策略摘录
以下是网上搜索的资料,仅供参考:
资料一:
ASP.NET缓存中Cache过期的三种策略(转自51CTO)
我们在页面上添加三个按钮并双击按钮创建事件处理方法,三个按钮使用不同的过期策略添加ASP.NET缓存。
- <asp:Button ID="btn_InsertNoExpirationCache" runat="server" Text="插入永不过期缓存"
- OnClick="btn_InsertNoExpirationCache_Click" />
- <asp:Button ID="btn_InsertAbsoluteExpirationCache" runat="server" Text="插入绝对时间
- 过期缓存" OnClick="btn_InsertAbsoluteExpirationCache_Click" />
- <asp:Button ID="btn_InsertSlidingExpirationCache" runat="server" Text="插入变化时间
- 过期缓存" OnClick="btn_InsertSlidingExpirationCache_Click" />
三个按钮的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会自己处理并发。
来源网址:http://developer.51cto.com/art/200907/140170.htm
资料二:(个人认为这个说的比较全面)
相似写法:
context.Cache.Insert(cacheKey, temp, dp, DateTime.MaxValue, TimeSpan.Zero);
--------------------------------------- 2013-7-10 begin ---------------------------------------
[MethodImpl(MethodImplOptions.Synchronized)] //对此方法实现线程同步
public void TestCache()
{
//add
System.Web.Caching.CacheDependency dp = new System.Web.Caching.CacheDependency(null, null);
HttpContext.Current.Cache.Add("key", "value", dp, DateTime.Now.AddHours(2), System.Web.Caching.Cache.NoSlidingExpiration, System.Web.Caching.CacheItemPriority.Normal, null);
HttpContext.Current.Cache.Insert("key", "value");
HttpContext.Current.Cache.Insert("key", "value", dp);
//get
Object cache = HttpContext.Current.Cache["key"];
//remove
HttpContext.Current.Cache.Remove("key");
}
--------------------------------------- 2013-7-10 end ---------------------------------------
最新文章
- Java中的序列化Serialable高级详解
- idea 静态资源不能即时更新
- linux常用工具链接
- oracle RAC的VIP和scan
- C++实现对lua访问的封装
- XPM转换与查看工具
- ZooKeeper学习第七期--ZooKeeper一致性原理
- NSDictionary to jsonString || 对象转json格式
- Light OJ 1018 - Brush (IV)
- 使用random输出10个double型的随机数
- 201521123107 《Java程序设计》第11周学习总结
- 【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记38 Unwind Segue反向过渡
- [Codeforces]856C - Eleventh Birthday
- 值得推荐的C/C++框架和库 (真的很强大) c
- 我为什么推荐Prettier来统一代码风格
- 洛谷P1083借教室题解
- oracle之 如何 dump logfile
- eclipse卡死在search for main types 20 files to index
- 《深入理解C指针》
- 常用sqoop操作
热门文章
- MarkDown中锚的使用
- iscroll.js的简单使用方法(总结)
- &#39;yii\base\InvalidRouteException&#39; with message &#39;Unable to resolve the request ";site/error";.&#39;
- mysql测试工具
- urllib.urlretrieve远程下载
- c#的DateTime.Now详解
- struts转换器
- Linux使用sshfs通过ssh挂载远端机器
- Ubuntu下安装为知笔记
- 【转载】取得系统中网卡MAC地址的三种方法