c# web 缓存管理
using System;
using System.Collections;
using System.Text.RegularExpressions;
using System.Web;
using System.Web.Caching;
using System.Collections.Generic; namespace Pub.Class
{
/// <summary>
/// Web缓存管理
/// </summary>
public class WebCache
{
#region 构造器
private WebCache() { } static WebCache() {
HttpContext context = HttpContext.Current;
if (context != null) { _cache = (Cache)context.Cache; } else { _cache = HttpRuntime.Cache; }
}
#endregion #region 公有靜态字段
/// <summary>
/// 日缓存因子
/// </summary>
public static readonly int DayFactor = ;
/// <summary>
/// 小时缓存因子
/// </summary>
public static readonly int HourFactor = ;
/// <summary>
/// 分缓存因子
/// </summary>
public static readonly int MinuteFactor = ;
/// <summary>
/// 秒缓存因子
/// </summary>
public static readonly double SecondFactor = 0.2;
#endregion #region 私有静态字段
private static readonly Cache _cache;
/// <summary>
/// 缓存因子
/// </summary>
private static int Factor = ;
#endregion #region 静态方法
public static IList<CachedItem> GetList(){
IList<CachedItem> list = new List<CachedItem>();
IDictionaryEnumerator CacheEnum = _cache.GetEnumerator();
while (CacheEnum.MoveNext()) {
list.Add(new CachedItem(CacheEnum.Key.ToString(),CacheEnum.Value.GetType().ToString()));
}
return list;
}
/// <summary>
/// 重新设置缓存因子
/// </summary>
/// <param name="cacheFactor"></param>
public static void ReSetFactor(int cacheFactor) { Factor = cacheFactor; }
/// <summary>
/// 清空所有缓存项目
/// </summary>
public static void Clear() {
IDictionaryEnumerator CacheEnum = _cache.GetEnumerator();
ArrayList al = new ArrayList();
while (CacheEnum.MoveNext()) { al.Add(CacheEnum.Key); } foreach (string key in al){ _cache.Remove(key); }
}
/// <summary>
/// 删除缓存
/// </summary>
/// <param name="pattern">缓存键正则匹配模式</param>
public static void RemoveByPattern(string pattern) {
IDictionaryEnumerator CacheEnum = _cache.GetEnumerator();
Regex regex = new Regex(pattern, RegexOptions.IgnoreCase | RegexOptions.Singleline | RegexOptions.Compiled);
while (CacheEnum.MoveNext()) {
if (regex.IsMatch(CacheEnum.Key.ToString()))
_cache.Remove(CacheEnum.Key.ToString());
}
}
/// <summary>
/// 删除缓存
/// </summary>
/// <param name="key">缓存键名</param>
public static void Remove(string key) { _cache.Remove(key); }
/// <summary>
/// 增加缓存项目
/// </summary>
/// <param name="key">缓存键名</param>
/// <param name="obj">缓存对象</param>
public static void Insert(string key, object obj) { Insert(key, obj, null, ); }
/// <summary>
/// 增加缓存项目(缓存时间:小时缓存因子*12)
/// </summary>
/// <param name="key">缓存键名</param>
/// <param name="obj">缓存对象</param>
/// <param name="dep">缓存依赖荐</param>
public static void Insert(string key, object obj, CacheDependency dep) { Insert(key, obj, dep, HourFactor * ); }
/// <summary>
/// 增加缓存项目
/// </summary>
/// <param name="key">缓存键名</param>
/// <param name="obj">缓存对象</param>
/// <param name="seconds">缓存秒数</param>
public static void Insert(string key, object obj, int seconds) { Insert(key, obj, null, seconds); }
/// <summary>
/// 增加缓存项目
/// </summary>
/// <param name="key">缓存键名</param>
/// <param name="obj">缓存对象</param>
/// <param name="seconds">缓存秒数</param>
/// <param name="priority">缓存优先级</param>
public static void Insert(string key, object obj, int seconds, CacheItemPriority priority) { Insert(key, obj, null, seconds, priority); }
/// <summary>
/// 增加缓存项目
/// </summary>
/// <param name="key">缓存键名</param>
/// <param name="obj">缓存对象</param>
/// <param name="dep">缓存依赖项</param>
/// <param name="seconds">缓存秒数</param>
public static void Insert(string key, object obj, CacheDependency dep, int seconds) { Insert(key, obj, dep, seconds, CacheItemPriority.Normal); }
/// <summary>
/// 增加缓存
/// </summary>
/// <param name="key">缓存键名</param>
/// <param name="obj">缓存对象</param>
/// <param name="dep">缓存依赖项</param>
/// <param name="seconds">缓存秒数</param>
/// <param name="priority">缓存优先级</param>
public static void Insert(string key, object obj, CacheDependency dep, int seconds, CacheItemPriority priority) {
if (obj != null) {
_cache.Insert(key, obj, dep, DateTime.Now.AddSeconds(Factor * seconds), Cache.NoSlidingExpiration, priority, null);
}
}
/// <summary>
/// 微小缓存
/// </summary>
/// <param name="key">缓存键名</param>
/// <param name="obj">缓存对象</param>
/// <param name="secondFactor">缓存秒因子</param>
public static void MicroInsert(string key, object obj, int secondFactor) {
if (obj != null) {
_cache.Insert(key, obj, null, DateTime.Now.AddSeconds(Factor * secondFactor), Cache.NoSlidingExpiration);
}
} /// <summary>
/// 增加缓存项目
/// </summary>
/// <param name="key"></param>
/// <param name="obj"></param>
public static void Max(string key, object obj) { Max(key, obj, null); }
/// <summary>
/// 最大缓存对象
/// </summary>
/// <param name="key">缓存键名</param>
/// <param name="obj">缓存对象</param>
/// <param name="dep">缓存依赖项</param>
public static void Max(string key, object obj, CacheDependency dep) {
if (obj != null) {
_cache.Insert(key, obj, dep, DateTime.MaxValue, Cache.NoSlidingExpiration, CacheItemPriority.AboveNormal, null);
}
}
/// <summary>
/// 获取缓存对象
/// </summary>
/// <param name="key">缓存键名</param>
/// <returns>返回缓存对象</returns>
public static object Get(string key) { return _cache[key]; }
/// <summary>
/// 根据秒缓存因子计算秒数
/// </summary>
public static int SecondFactorCalculate(int seconds) { return Convert.ToInt32(Math.Round((double)seconds * SecondFactor)); }
#endregion
}
}
c# web 缓存管理的更多相关文章
- 【web性能】 JS、CSS的合并、压缩、缓存管理
本篇文章主要讨论下目前JS,CSS 合并.压缩.缓存管理存在的一些问题,然后分享下自己项目中用到的1个处理方案,并提供1个实例下载. 存在的问题: 合并.压缩文件主要有2方面的问题: 1. 每次发 ...
- 深入System.Web.Caching命名空间 教你Hold住缓存管理
一,System .Web.Caching与缓存工作机制简介 System.Web.Caching是用来管理缓存的命名空间,其父级空间是System.Web,由此可见,缓存通常用于Web网站的开发,包 ...
- Web缓存杂谈
一.概述 缓存通俗点,就是将已经得到的‘东东’存放在一个相对于自己而言,尽可能近的地方,以便下次需要时,不会再二笔地跑到起始点(很远的地方)去获取,而是就近解决,从而缩短时间和节约金钱(坐车要钱嘛). ...
- HTML5 离线缓存管理库
一.HTML5离线缓存技术 支持离线缓存是HTML5中的一个重点,离线缓存就是让用户即使在断网的情况下依然可以正常的运行应用.传统的本地存储数据的方式有 localstorage,sessionsto ...
- Spring自定义缓存管理及配置Ehcache缓存
spring自带缓存.自建缓存管理器等都可解决项目部分性能问题.结合Ehcache后性能更优,使用也比较简单. 在进行Ehcache学习之前,最好对Spring自带的缓存管理有一个总体的认识. 这篇文 ...
- Magicodes.WeiChat——缓存管理
本框架支持缓存管理,内部机制使用开源库CacheManager.支持全局缓存.租户缓存,默认使用的系统缓存实现,可以在Web.config将其配置为其他缓存类型,比如支持Redis.内存等. 开源库地 ...
- Web 技术人员需知的 Web 缓存知识(转)
最近的译文距今已有4年之久,原文有一定的更新.今天踩着前辈们的肩膀,再次把这篇文章翻译整理下.一来让自己对web缓存的理解更深刻些,二来让大家注意力稍稍转移下,不要整天HTML5, 面试题啊叨啊叨的~ ...
- Apache-Shiro+Zookeeper系统集群安全解决方案之缓存管理
上篇[Apache-Shiro+Zookeeper系统集群安全解决方案之会话管理],解决了Shiro在系统集群开发时安全的会话共享问题,系统在使用过程中会有大量的权限检查和用户身份检验动作,为了不频繁 ...
- [转载]WEB缓存技术概述
[原文地址]http://www.hbjjrb.com/Jishu/ASP/201110/319372.html 引言 WWW是互联网上最受欢迎的应用之一,其快速增长造成网络拥塞和服务器超载,导致客户 ...
随机推荐
- less 初试
第一次接触less,做些记录. 官网 民间中文文档 less notepad++插件 1. 支持变量声明 支持颜色.大小等相加 @nice-blue: #5B83AD; @light ...
- Android Log图文详解
android.util.Log常用的方法有以下5个:Log.v() Log.d() Log.i() Log.w() 以及 Log.e() .根据首字母对应VERBOSE,DEBUG,INFO, WA ...
- iOS6:在你的App内使用Passbook
前言 这是一篇翻译,感谢Jonathan Tang. 原文地址:iOS 6 Tutorial: Integrating Passbook into Your Applications 另外,看到另一篇 ...
- 史上最全的css hack(ie6-9,firefox,chrome,opera,safari) (zz)
在这个浏览器百花争鸣的时代,作为前端开发的我们为了我们漂亮的设计能适应各个浏览器可为煞费苦心,主要体现在javascript和css上面.javascript我这次就不谈了,先说说css. ...
- centos 6.4下安装postgresql 9.2
我的linux版本是centos 6.4 ,准备安装postgresql 9.2 根据官方说明: http://www.postgresql.org/download/linux/redhat/ 缺省 ...
- Where does beauty come from?
One more question, rational beauty should come from a dedicated brain and mind. Should there be more ...
- .net 中 ref out params的区别
C#中有三个关键字-ref,out ,params,虽然本人不喜欢这三个关键字,因为它们疑似破坏面向对象特性.但是既然m$把融入在c#体系中,那么我们就来认识一下参数修饰符ref,out ,param ...
- jq 换图片路径
$("#index_01")[0].src="images/index_01_1.jpg"; //更改ID为index_01的图片的src值 $("# ...
- linux中模块的相关操作
/lib/modules/[kernel版本]/modules.dep 这个文件记录了模块的依赖关系 modprobe 和 insmod 这两个命令都可以加载模块,但是modeprobe会自动分析模块 ...
- SqlServer 中如何查看某一个Sql语句是复用了执行计划,还是重新生成了执行计划
我们知道SqlServer的查询优化器会将所执行的Sql语句的执行计划作缓存,如果后续查询可以复用缓存中的执行计划,那么SqlServer就会为后续查询复用执行计划而不是重新生成一个新的执行计划,因为 ...