Cache 缓存

参考 : http://www.cnblogs.com/fish-li/archive/2011/12/27/2304063.html#_label2

http://www.jb51.net/article/22516.htm

 

这里只说要点 : 

cache 是线程安全的. 原理也是用lock,不过有做过优化.

引用有3个way ,  HttpRuntime.Cache , HttpContext.Cache , Page.Cache 都是同一个对象

cache["key"] 读写内部就是调用了 .Get() 和 .Insert() 方法

.Insert() 会覆盖原有的cache , .Add() 则不会哦.

.net大约每20秒会检查一次cache过期,也就是说即使你设置一个绝对过期时间,他也不会那么准过期的.

 

Insert 时可以定义很多东西 parameters

1. key 

2.value (object 类型)

3.依赖项(就是你依赖的对象如果改变了,cache就会失效,参考上面的link)

4.绝对过期时间  (DateTime 类型) 如果有设置了5. 那么这里请放 System.Web.Caching.Cache.NoAbsoluteExpiration

5.最后一次访问后多久会过期 (TimeSpan 类型) , 如果有设置了4. 那么这里请放 System.Web.Caching.Cache.NoSlidingExpiration

6.移除优先 System.Web.Caching.CacheItemPriority (Enum 类型), 可以设置永不移除

7.new System.Web.Caching.CacheItemRemovedCallback(delegate(string key, object value, System.Web.Caching.CacheItemRemovedReason reason)) //可以直接放一个匿名委托

 

上面的是 CacheItemRemovedCallback ,触发时 cache 已经被移除了 , 还有一种是在要移除之前触发的 

1,2,3,4,5 一样

6.

delegate(string key, CacheItemUpdateReason reason, out object value, out CacheDependency dependency, out DateTime exipriation, out TimeSpan slidingExpiration)
{
var old = Cache["key"];
dependency = null;
exipriation = Cache.NoAbsoluteExpiration;
slidingExpiration = Cache.NoSlidingExpiration;
value = "haha";
});

 

posted @   兴杰  阅读(194)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 百万级群聊的设计实践
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
点击右上角即可分享
微信分享提示