如何确定ASP.NET缓存的大小(以字节为单位)?

3
我正在开发一个使用服务器端缓存的ASP.NET Web应用程序,并试图了解如何在一些规模测试期间监视此缓存的大小。缓存存储各种大小的XML文档,其中一些是多兆字节。
System.Web.Caching命名空间的System.Web.Caching.Cache对象上,我看到各种属性,包括Count,它获取“缓存中存储的项数”,以及EffectivePrivateBytesLimit,它获取“缓存可用的字节数”。没有任何东西告诉我缓存的字节数大小。
在“为.NET Framework应用程序设计缓存架构指南”的理解缓存技术部分中,有一个“管理缓存对象”部分,其中列出了一个表格(表2.2:用于监视缓存的应用程序性能计数器集),但我没有看到任何给出缓存当前大小的性能计数器。
有什么好的方法可以找到这个缓存的大小吗?我是否必须在缓存上设置一个字节限制并查看其中一个周转率?我是否以错误的方式思考了这个问题?如何确定ASP.Net缓存的总大小的答案真的是最佳方法吗?
1个回答

1

在我读到你的问题之前,我本来想给出一个不太详细的答案,但现在我建议你看一下这个链接,我认为它非常准确。最好的方法是在服务器上查看物理大小,其他任何方法可能不准确。

你可能需要设置一些监控,可以使用PowerShell脚本记录并发送报告给自己。这样,你可以运行各种测试,比如说过夜测试,并进行总结。

顺便说一句,这些听起来像是非常大的文档,放入内存缓存中。你是否考虑过为这些较大的项目使用基于磁盘的缓存,并将内存留给更适合它的较小项目。如果你的磁盘速度足够快,这应该是相当高效的。


我应该寻找是否有任何内置的.NET类用于基于磁盘的缓存? - Kevin Hakanson
@Kevin 很好奇,你也可能会感兴趣,这是几年前的内容,但仍然看起来很有参考价值。http://blogs.msdn.com/dmitryr/archive/2005/12/13/503411.aspx - dove
@dove 感谢提供的链接 - dmitryr 的博客文章提到了一个 CodePlex 项目,但该项目似乎已不存在:http://www.codeplex.com/AspNetDiskOutputCach - Kevin Hakanson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接