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是互联网上最受欢迎的应用之一,其快速增长造成网络拥塞和服务器超载,导致客户 ...
随机推荐
- C# 字典 Dictionary<Tkey,Tvalue>
最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来.我们都知道计算机技术发展日新月异,速度惊人的快,你我稍不留神,就会被慢慢淘汰!因此:每日不间断的学习是避免被 ...
- 使用 CSS 的 :before 和 :after 选择器做一个箭头样式
对于 :before 和 :after 选择器,大家并不陌生,但是很少有人会主动去用它们.先解释下它们的定义和用法: :before 选择器在被选元素的内容前面插入内容,:after 选择器在被选元素 ...
- 《30天自制操作系统》02_day_学习笔记
helloos3: helloos.nas的解释在P29中 接下来课本讲了一些汇编语言的知识,便于理解这个汇编文件helloos4: 讲解在P41 helloos.nas后半部分去掉就成了ipl.as ...
- Cocoapods注意点
1 安装和升级$ sudo gem install cocoapods $ pod setup 2 更换为taobao的源 $ gem sources -r https://rubygems.org/ ...
- Ubuntu 16.04 LTS Final Beta about JAVA
我们知道Ubuntu里可能会事先安装了openjdk.但是我习惯于Oracle jdk. ## < 卸载 openjdk > successfully: ### Terminal comm ...
- 杭电 1595 find the safest road
find the safest road Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- sql 中英文格式的时间转数字格式
select receiveBillDt,CONVERT(varchar(100), cast(receiveBillDt as datetime), 21),a.LoanDate from Prot ...
- 如何学习c++
在之后的随笔中,我作为一个c++的初学者将会把我如何学习c++的经历尽可能详细的记录下来. 这里引用了JerryZhang在他的博文里面写的一段话,当作我的座右铭. 1.多交流:不管你的技术多么硬,你 ...
- 夺命雷公狗---DEDECMS----23dedecms修改内容页面展示的信息
我们在网站上不管点击那个影视作品的A连接都是进入到一个同样的页面,因为他们是一个模版文件: 我们还没有对这个模版进行任何的修改,所以我们要在内容模版增加标签取出对应的影视作品,而且导航条也是按照模版上 ...
- Image对象及其子类BufferedImage
(1)java.awt.Image图像类是抽象类,提供获得绘图对象.图像缩放.选择图像平滑度等功能,声明如下: public abstract class Image extends Object { ...