cav*_*lac 6 asp.net caching sqlcachedependency
我试过阅读ASP.NET中的缓存,但仍然有一些问题.
使用Sql Cache Dependency时...我知道您可以指定将监视哪些表,但如果其中任何一个表发生更改,它是否会重置整个缓存?我知道我不想缓存频繁更改的表,但我们最终会得到一些缓存的表,即使每个表每天只获得一些更新,也可能会变成50%的缓存重置每天(8小时窗口).
我将通过GAC DLL创建和维护此缓存.大量不同的应用程序将在任何时候访问该GAC.每个应用程序是否都维护自己的缓存副本,还是只存储在一个全局位置(或者可能是每个应用程序池)?
在服务器上是否有物理位置,我可以看到Cache当前消耗了多少空间?如果每个应用程序都维护自己的缓存,那么这将是非常相关的,因为这可能最终占用大量磁盘空间.
有没有办法物理强制缓存重建自己?我可以看到我的老板认为缓存是针对特定问题的错误而且我需要能够在最严格的级别上排除这一点.没有"改变记录并说应该重建缓存",而是"做[行动X]并且知道缓存中的任何内容现在已经消失"
提前感谢您的答案和时间.
SqlCacheDependency 仅监视旧式 SQL 2000 方法中的表,该方法依赖于触发器和轮询。SQL 2005+ 方法监视行级别的更改,并使用 Service Broker。在 Cache 对象级别,更改只会使与给定 SqlCacheDependency 关联的 Cache 条目无效(而不是整个缓存)。
每个应用程序都有一个单独的缓存副本。如果您有许多应用程序共享相同的数据,您可能会考虑创建一个单独的“缓存服务器”,并让您的应用程序使用 WCF 从那里获取数据 - 基本上是向您的应用程序添加另一层。
您可以查看几个与缓存相关的性能计数器,但如果您关心的是磁盘空间,则无需担心,因为 ASP.NET 缓存完全存储在 RAM 中。此外,如果 RAM 太满,缓存的一个功能是它会释放旧的/不经常引用的对象,为新对象腾出空间。
强制删除缓存的最简单方法是简单地回收应用程序或 AppPool(默认情况下每天大约发生一次)。如果您想要更有针对性的内容,则需要编写一些代码来强制从缓存中删除某些项目,可以使用 Cache.Remove() 或使用链接依赖项。
| 归档时间: |
|
| 查看次数: |
388 次 |
| 最近记录: |