asp.net 缓存公共类
using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Web.Caching;
using System.IO;
namespace Tools.Web
{
/// <summary>
/// 网页中的缓存类,使用示例:
/// object obj = DataCache.GetCache("file1",depfile);
///if (obj == null)
///{
/// string txt = "缓存内容";//从数据库或文件读取到的内容
/// DataCache.SetCacheDepFile("file1", txt, depfile);
/// }
/// else
/// {
/// string txt=obj.ToString();
/// }
/// </summary>
///
public partial class DataCache
{
#region 文件路径web.config
private static string _webconfigfile = string.Empty;
/// <summary>
/// 文件路径web.config
/// </summary>
public static string webconfigfile
{
get
{
if (string.IsNullOrEmpty(_webconfigfile)) _webconfigfile = HttpContext.Current.Server.MapPath("/web.config");
return _webconfigfile;
}
}
#endregion
#region 文件路径App_Data/ShopConfig.config
private static string _shopconfigfile = string.Empty;
/// <summary>
/// 文件路径App_Data/ShopConfig.config
/// </summary>
public static string shopconfigfile
{
get
{
if (string.IsNullOrEmpty(_shopconfigfile)) _shopconfigfile = HttpContext.Current.Server.MapPath("/App_Data/ShopConfig.config");
return _shopconfigfile;
}
}
#endregion
#region 文件路径App_Data/SiteConfig.config
private static string _siteconfigfile = string.Empty;
/// <summary>
/// 文件路径App_Data/SiteConfig.config
/// </summary>
public static string siteconfigfile
{
get
{
if (string.IsNullOrEmpty(_siteconfigfile)) _siteconfigfile = HttpContext.Current.Server.MapPath("/App_Data/SiteConfig.config");
return _siteconfigfile;
}
}
#endregion
#region 文件路径App_Data/Template.config
private static string _templateconfigfile = string.Empty;
/// <summary>
/// 文件路径App_Data/Template.config
/// </summary>
public static string templateconfigfile
{
get
{
if (string.IsNullOrEmpty(_templateconfigfile)) _templateconfigfile = HttpContext.Current.Server.MapPath("/App_Data/Template.config");
return _templateconfigfile;
}
}
#endregion
#region 删除缓存
/// <summary>
/// 删除缓存
/// </summary>
/// <param name="CacheKey">键</param>
public static void DeleteCache(string CacheKey)
{
HttpRuntime.Cache.Remove(CacheKey);
}
#endregion
#region 获取缓存,依赖时间
/// <summary>
/// 获取缓存,依赖时间
/// </summary>
/// <param name="CacheKey">键</param>
/// <returns></returns>
public static object GetCache(string CacheKey)
{
object obj_time = HttpRuntime.Cache[CacheKey + "_time"];
object obj_cache = HttpRuntime.Cache[CacheKey];
if (obj_time != null && obj_cache != null)
{
if (Convert.ToDateTime(obj_time) < DateTime.Now)
{
DeleteCache(CacheKey);
DeleteCache(CacheKey + "_time");
return null;
}
else return obj_cache;
}
else
{
DeleteCache(CacheKey);
DeleteCache(CacheKey + "_time");
return null;
}
}
#endregion
#region 获取缓存,依赖文件
/// <summary>
/// 获取缓存,依赖文件
/// </summary>
/// <param name="CacheKey">键</param>
/// <param name="depFile">依赖的文件</param>
/// <returns></returns>
public static object GetCache(string CacheKey, string depFile)
{
object obj_time = HttpRuntime.Cache[CacheKey + "_time"];
object obj_cache = HttpRuntime.Cache[CacheKey];
if (File.Exists(depFile))
{
FileInfo fi = new FileInfo(depFile);
if (obj_time != null && obj_cache != null)
{
if (Convert.ToDateTime(obj_time) != fi.LastWriteTime)
{
DeleteCache(CacheKey);
DeleteCache(CacheKey + "_time");
return null;
}
else return obj_cache;
}
else
{
DeleteCache(CacheKey);
DeleteCache(CacheKey + "_time");
return null;
}
}
else
{
throw new Exception("文件(" + depFile + ")不存在!");
}
}
#endregion
#region 简单的插入缓存
/// <summary>
/// 简单的插入缓存
/// </summary>
/// <param name="CacheKey">键</param>
/// <param name="objObject">数据</param>
public static void SetCache(string CacheKey, object objObject)
{
HttpRuntime.Cache.Insert(CacheKey, objObject);
}
#endregion
#region 有过期时间的插入缓存数据
/// <summary>
/// 有过期时间的插入缓存数据
/// </summary>
/// <param name="CacheKey">键</param>
/// <param name="objObject">数据</param>
/// <param name="absoluteExpiration">过期时间</param>
/// <param name="slidingExpiration">可调度参数,传null就是禁用可调度</param>
public static void SetCache(string CacheKey, object objObject, DateTime absoluteExpiration, TimeSpan slidingExpiration)
{
if (slidingExpiration == null) slidingExpiration = Cache.NoSlidingExpiration;
HttpRuntime.Cache.Insert(CacheKey, objObject, null, absoluteExpiration, slidingExpiration);
HttpRuntime.Cache.Insert(CacheKey + "_time", absoluteExpiration, null, absoluteExpiration, slidingExpiration);//存储过期时间
}
#endregion
#region 插入缓存数据,指定缓存多少秒
/// <summary>
/// 插入缓存数据,指定缓存多少秒
/// </summary>
/// <param name="CacheKey">缓存的键</param>
/// <param name="objObject">缓存的数据</param>
/// <param name="seconds">缓存秒数</param>
/// <param name="slidingExpiration">传null就是禁用可调度过期</param>
public static void SetCacheSecond(string CacheKey, object objObject, int seconds, TimeSpan slidingExpiration)
{
DateTime absoluteExpiration = DateTime.Now.AddSeconds(seconds);
if (slidingExpiration == null) slidingExpiration = Cache.NoSlidingExpiration;
HttpRuntime.Cache.Insert(CacheKey, objObject, null, absoluteExpiration, slidingExpiration);
HttpRuntime.Cache.Insert(CacheKey + "_time", absoluteExpiration, null, absoluteExpiration, slidingExpiration);//存储过期时间
}
#endregion
#region 依赖文件的缓存,文件没改不会过期
/// <summary>
/// 依赖文件的缓存,文件没改不会过期
/// </summary>
/// <param name="CacheKey">键</param>
/// <param name="objObject">数据</param>
/// <param name="depfilename">依赖文件,可调用 DataCache 里的变量</param>
public static void SetCacheDepFile(string CacheKey, object objObject, string depfilename)
{
//缓存依赖对象
System.Web.Caching.CacheDependency dep = new System.Web.Caching.CacheDependency(depfilename);
DateTime absoluteExpiration = System.Web.Caching.Cache.NoAbsoluteExpiration;
TimeSpan slidingExpiration = System.Web.Caching.Cache.NoSlidingExpiration;
System.Web.Caching.Cache objCache = HttpRuntime.Cache;
objCache.Insert(
CacheKey,
objObject,
dep,
System.Web.Caching.Cache.NoAbsoluteExpiration, //从不过期
slidingExpiration, //禁用可调过期
System.Web.Caching.CacheItemPriority.Default,
null);
if (File.Exists(depfilename))
{
FileInfo fi = new FileInfo(depfilename);
DateTime lastWriteTime = fi.LastWriteTime;
HttpRuntime.Cache.Insert(CacheKey + "_time", lastWriteTime, null, absoluteExpiration, slidingExpiration);//存储文件最后修改时间
}
}
#endregion
}
}
asp.net 缓存公共类的更多相关文章
- ASP.NET中常用的几个李天平开源公共类LTP.Common,Maticsoft.DBUtility,LtpPageControl
ASP.NET中常用的几个开源公共类: LTP.Common.dll: 通用函数类库 源码下载Maticsoft.DBUtility.dll 数据访问类库组件 源码下载LtpPageC ...
- ASP.NET中常用的几个李天平开源公共类LTP.Common,Maticsoft.DBUtility,LtpPageControl (转)
ASP.NET中常用的几个开源公共类: LTP.Common.dll: 通用函数类库 源码下载Maticsoft.DBUtility.dll 数据访问类库组件 源码下载LtpPageC ...
- Android公共库——图片缓存 网络缓存 下拉及底部更多ListView 公共类
Android公共库——图片缓存 网络缓存 下拉及底部更多ListView 公共类 转载自http://www.trinea.cn/android/android-common-lib/ 介绍总结的一 ...
- asp.net—缓存
1.页面缓存 要实现页面输出缓存,只要将一条 OutputCache 指令添加到页面即可. <%@ OutputCache CacheProfile=" " NoStore= ...
- Asp.Net缓存(2)
缓存页的多个版本 ASP.NET 允许在输出缓存中缓存同一页的多个版本.输出缓存可能会因下列因素而异: 初始请求 (HTTP GET) 中的查询字符串. 回发时传递的控制值(HTTP POST 值). ...
- Asp.Net缓存(1)
知其根本,方能应用.MSDN上的缓存讲解.先看原来讲解. Asp.Net缓存概述 通常,应用程序可以将那些频繁访问的数据,以及那些需要大量处理时间来创建的数据存储在内存中,从而提高性能. 在这些情况下 ...
- ASP.NET缓存策略经验谈
要提升ASP.NET应用程序的性能,最简单.最有效的方式就是使用内建的缓存引擎.虽然也能构建自己的缓存,但由于缓存引擎已提供了如此多的功能,所以完全不必如此麻烦.在很大程度上,ASP.NET开发者在W ...
- (转)ASP.NET缓存全解析6:数据库缓存依赖
ASP.NET缓存全解析文章索引 ASP.NET缓存全解析1:缓存的概述 ASP.NET缓存全解析2:页面输出缓存 ASP.NET缓存全解析3:页面局部缓存 ASP.NET缓存全解析4:应用程序数据缓 ...
- 自己封装的C#操作redis公共类
关于C#操作redis公共类,网上有很多版本,每个版本我都看了,发觉还是不够完美,都存在一个问题,只能操作单一的缓存数据库 redis指令支持上,这里可以自己去扩展,下面分享下我近期封装的一个redi ...
随机推荐
- BZOJ 2049 [SDOI2008]洞穴勘测 (LCT)
题目大意:维护一个森林,支持边的断,连,以及查询连通性 LCT裸题 洛谷P2147传送门 1A了,给自己鼓鼓掌 #include <cstdio> #include <algorit ...
- Python学习笔记(6)元组
2019-03-02 元组(tuple): (1)元组是不可变的,无法进行任意修改.插入.删除一个元素. (2)创建元组大部分时候用小括号,如果创建的元组中只有一个元素,需要在它的后面加上一个逗号. ...
- 小学生绞尽脑汁也学不会的python(面对对象-----成员)
小学生绞尽脑汁也学不会的python(面对对象-----成员) 成员 class Person: def __init__(self, name, num, gender, birthday): # ...
- HDU 4321 Contest 3
题意:给定a和b,n,让你求b+a, b+2*a, .......b+n*a里面有多少1. 当统计第K位的时候 可以注意到 第 B+T*A 和 B+(T+2^(K+1))*A 位是相同的 那么 第K位 ...
- java语言中的多态概述
多态:一个对象相应着不同类型 多态在代码中的体现:父类或接口的引用指向其子类对象. 多态的优点: 提高了代码的扩展性,前期定义的代码能够使用后期的内容. 多态的弊端: 前期定义的内容不能使用后期子类中 ...
- 编写shell脚本获取本机的网络地址。  比方:本机的ip地址是:192.168.100.2/255.255.255.0,那么它的网络地址是 192.168.100.1/255.255.255.
ubuntu@ubuntu:~$ vim getlocalip.sh #!/bin/bash #ifconfig | grep inet | awk '$2' | awk -F : '$2' IP=` ...
- Android开发之使用Web Service进行网络编程
使用Web Service进行网络编程 Android应用通常都是执行在手机平台上.手机系统的硬件资源是有限的,无论是存储能力还是计算能力都有限.在Android系统上开发.执行一些单用户.小型应用是 ...
- nyoj--90--整数划分(母函数)
整数划分 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 将正整数n表示成一系列正整数之和:n=n1+n2+-+nk, 其中n1≥n2≥-≥nk≥1,k≥1. 正整数 ...
- [TJOI2017] DNA 解题报告 (hash+二分)
题目链接:https://www.luogu.org/problemnew/show/P3763 题目大意: 给定原串S0,询问S0有多少个子串和给定串S相差不到3个字母 题解: 我们枚举S0的子串, ...
- ASP页面的执行顺序
http://hi.baidu.com/yanjiezhu/item/29c113c3912e2a0ac710b2d3 1.对象初始化(OnInit方法) 页面中的控件(包括页面本身)都是在它们最初的 ...