.net里的 static 可以当缓存用么? 跟cache相比区别在哪呢?

zxstone 2016-03-29 02:25:16
RT

static为静态变量,假设,我缓存的内容是永远不会改变的,除非重启IIS。

那么,使用了static之后,是否就可以当缓存用?


比如,加载某个网站的头部,那个头部常规情况下都不会改变。


弄清楚这个问题,就会发现这篇文章是不是在扯淡?
http://www.cnblogs.com/lori/p/4010862.html


...全文
1576 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zxstone 2016-04-02
  • 打赏
  • 举报
回复
引用 3 楼 sp1234 的回复:
把数据放到内存里叫做“缓存”,这是自欺欺人的说法。 缓存的目的,就是用很少的内存来缓冲海量数据。例如用10M内存来缓存10数据,其核心就是“缓存命中率”概念。缓存的基本的机制,就是配置“CacheDependency”。如果没有这个机制,就是假的了!
感谢~! 是这样的,我确实做过实验,用static当缓存用,结果网站快崩了,换了cache之后,就好了。 然后吧,有同事翻出了那篇文章跟我争执。 我看完之后,感觉文章说得不对,但是我一直没弄清楚根本原因。
  • 打赏
  • 举报
回复
学习了,每次看p哥的回复 都有收获
masanaka 2016-03-31
  • 打赏
  • 举报
回复
sp1234_maJia 2016-03-31
  • 打赏
  • 举报
回复
比如说,当 csdn 的帖子要显示时,可以先判断 Cache["http://bbs.csdn.net/topics/391925481?page=1#post-400989908"] 这个缓存单元是否存在,如果存在则直接取得这个缓存数据即可,否则就去访问数据库来查询出这个帖子并且创建这个缓存单元。 内存里放的是一些独立的数据个体(例如这里用 url 作为缓存实体的 key),绝不是说把数据库表整个给放到内存里!假设有1万条数据,那么内存中可能只有10条数据,其它的都没有必要占用内存里,而且这些内存中的数据是否“脏了,需要清理”是靠着CacheDependency自动处理。 缓存用于减少读取数据库的次数,那么缓存的key通常就是sql语句(或者是sql语句的的md5签名),这样就能将相同sql查询模式的结果给缓存起来! 缓存的概念,并不是傻傻地把数据库都放到内存里。
  • 打赏
  • 举报
回复
你贴的文章链接,我没有点进去看。 不过,把静态变量叫做“缓存”,这就好象有的人把“不允许多个地方使用相同用户名、密码来登录”误导为“单点登录”一样,是一个比较常见的错误。
  • 打赏
  • 举报
回复
例如用10M内存来缓存10数据 --> 例如用10M内存来缓存10G数据 CacheDependency有很多种,例如.net 提供的可以根据数据库表的改变、文件改变、其它缓存单元改变、定时清理、自定义CacheDependency机制(例如你可以用十几行代码来将一个分布式的开源系统的事件通知机制封装到自己的Dependency实例中)、自定义组合多种CacheDependency为一个CacheDependency,等等机制。 当内存不足时,或者其它任意情况,缓存系统都可能随时丢弃数据。而那些“静态变量”敢丢弃数据吗?
  • 打赏
  • 举报
回复
把数据放到内存里叫做“缓存”,这是自欺欺人的说法。 缓存的目的,就是用很少的内存来缓冲海量数据。例如用10M内存来缓存10数据,其核心就是“缓存命中率”概念。缓存的基本的机制,就是配置“CacheDependency”。如果没有这个机制,就是假的了!
zxstone 2016-03-31
  • 打赏
  • 举报
回复
木人解答么? 求大牛
zxstone 2016-03-29
  • 打赏
  • 举报
回复
大牛 求关注

13,347

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET技术前瞻
社区管理员
  • .NET技术前瞻社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧