微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

asp.net – C#中的缓存对我来说是正确的方法吗?

我试过阅读ASP.NET中的缓存,但仍然有一些问题.

>使用sql Cache Dependency时…我知道您可以指定将监视哪些表,但如果其中任何一个表发生更改,它是否会重置整个缓存?我知道我不想缓存频繁更改的表,但我们最终会得到一些缓存的表,即使每个表每天只获得一些更新,也可能会变成50%的缓存重置每天(8小时窗口).
>我将通过GAC DLL创建和维护此缓存.大量不同的应用程序将在任何时候访问该GAC.每个应用程序是否都维护自己的缓存副本,还是只存储在一个全局位置(或者可能是每个应用程序池)?
>服务器上是否有物理位置,我可以看到Cache当前消耗了多少空间?如果每个应用程序都维护自己的缓存,那么这将是非常相关的,因为这可能最终占用大量磁盘空间.
>有没有办法物理强制缓存重建自己?我可以看到我的老板认为缓存是针对特定问题的错误而且我需要能够在最严格的级别上排除这一点.没有“改变记录并说应该重建缓存”,而是“做[行动X]并且知道缓存中的任何内容现在已经消失”

提前感谢您的答案和时间.

解决方法

> sqlCacheDependency仅监视旧式sql 2000方法中的表,该方法依赖于触发器和轮询. sql 2005方法监视行级别的更改,并使用Service broker.在Cache对象的级别,更改将使与给定sqlCacheDependency(而不是整个缓存)关联的Cache条目无效. >每个应用程序都有一个单独的Cache副本.如果您有许多应用程序共享相同的数据,您可以考虑创建一个单独的“缓存服务器”,让您的应用程序从那里使用WCF从中获取数据 – 基本上为您的应用程序添加一个层. >您可以查看几个与缓存相关的性能计数器,但如果您担心的是磁盘空间,则无需担心,因为ASP.NET缓存完全存储在RAM中.此外,如果RAM太满,缓存的一个特性是它将放弃旧的/不经常引用的对象以为新对象腾出空间. >强制删除缓存的最简单方法是简单地回收您的应用程序或AppPool(无论如何,认情况下每天都会发生一次).如果你想要更有针对性的东西,你需要编写一些代码来强制从缓存中删除某些项目,使用Cache.Remove()或使用链接依赖项.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐