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";
});
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 百万级群聊的设计实践
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)