做.NET后台开发的同学,对缓存处理一定不陌生,这里把我混迹C#圈子十余载珍藏的基础类库分享出来,希望能够给刚踏入开发门槛的朋友一些帮助。
后续我会逐步分享基础库的其余部分,先列个大纲:
首先还是科普一下缓存的概念:
什么是Cache对象?
你在生成高性能网络应用程序时所遇到的一个问题就是需要避免重复。一个Cache对象允许在它们第一次被请求时在内存中缓存项,然后将被缓存的副本用于以后的请求。使用被缓存的副本允许你避免重建满足以前请求的信息,特别是那些每次创建时都需占有明示的服务器上的处理器时间的命令。
除缓存个别项,如缓存中的计算结果以外,Asp.net提供一个输出缓存可用于保存网页和用户控件。Cache对象和输出缓存是拥有相同的角色和属性,但它们是皆然不同的两种对象。
ASP.NET提供一个全特性的缓存引擎,用于保存和获取信息片段。Cache对象没有关于它所包含的的项的信息。Cache对象仅包含对于那些对象的引用以及提供它们的依赖项和设置过期策略。Cache还提供方法在相同网络应用程序的网页之间传递值。缓存方法实现自动的锁,所以,值在被多个页并发访问时是安全的。
那么Cache对象是如何工作的呢?
使用Cache对象的的过程是:
1. 页面请求的项被标识为已经在Cache对象中保存。
2. ASP.NET 检查 Cache 对象并用已缓存的版本来决定是否可用。
3. 如果缓存的版本不可用,ASP.NET 重新创建项,使用此项,然后将它保存在Cache对象以备后用。
1、定义缓存处理私有对象
#region 私有
/// <summary>
/// 线程安全锁
/// </summary>
private static object asyncLock = new object();
/// <summary>
/// 获取状态缓存的键名
/// </summary>
/// <param name="cacheName">缓存名称</param>
/// <returns></returns>
private static string GetStateCacheKey(string cacheName)
{
return string.