C# ObjectCache、OutputCache缓存
/// <summary>
/// 缓存操作类
/// </summary>
public class Cache
{
private static List<string> _allUseCacheKey = new List<string>();
private static ObjectCache _cache = MemoryCache.Default; /// <summary>
/// 添加缓存
/// </summary>
/// <param name="key">Key 唯一</param>
/// <param name="value">值</param>
/// <param name="cacheOffset">超时时间</param>
public static void Add(string key, object value, DateTimeOffset cacheOffset)
{
if (_allUseCacheKey.Contains(key))
{
Remove(key);
}
_allUseCacheKey.Add(key);
_cache.Add(key, value, cacheOffset);
} /// <summary>
/// 移除缓存
/// </summary>
/// <param name="key">Key</param>
public static void Remove(string key)
{
if (_allUseCacheKey.Contains(key))
{
_allUseCacheKey.Remove(key);
}
_cache.Remove(key);
} /// <summary>
/// 读取缓存
/// </summary>
/// <param name="key">Key</param>
/// <returns></returns>
public static object Read(string key)
{
if (_allUseCacheKey.Contains(key))
return _cache[key];
return null;
} /// <summary>
/// 清除所有缓存
/// </summary>
public static void Clear()
{
foreach (string value in _allUseCacheKey)
{
_cache.Remove(value);
}
_allUseCacheKey.Clear();
}
}
public class SysuserStorageService
{
private int _adminId; public SysuserStorageService(int adminId)
{
_adminId = adminId;
} /// <summary>
/// 缓存一些内容
/// </summary>
public void Storage()
{
tbl_admin user = new tbl_admin();//根据实际需求获取对象
Cache.Add(_adminId + "-Admin-" + SystemSetting.Wms, user, SystemSetting.OffSetTime);
Cache.Add(_adminId + "-LastLoginTime-" + SystemSetting.Wms, DateTime.Now, SystemSetting.OffSetTime);
} public tbl_admin GetAdmin
{
get { return (tbl_admin)Cache.Read(_adminId + "-Admin-" + SystemSetting.Wms); }
} public string GetLastLoginTime
{
get { return ((DateTime)Cache.Read(_adminId + "-LastLoginTime-" + SystemSetting.Wms)).ToString("yyyy-MM-dd HH:mm:ss"); }
}
}
public class SystemSetting
{
/// <summary>
/// 缓存定义
/// </summary>
public const string ShopWms = "Wms"; /// <summary>
/// 缓存超时时间
/// </summary>
public static DateTimeOffset OffSetTime = DateTimeOffset.Now.AddHours(); /// <summary>
/// 登录Session
/// </summary>
public const string LoginSession = "";
}
SysuserStorageService storage = new SysuserStorageService(AdminId);//根据ID调用
tbl_admin User = storage.GetAdmin;
//页面缓存
[OutputCache(Duration = 300, VaryByParam = "productno;brand;years")]
上述代码使用@OutputCatch指令声明了页面缓存,该页面将被缓存300秒。@OutputCatch指令包括10个属性,通过这些属性能够分别为页面的不同情况进行缓存设置,常用的属性如下所示:
CacheProfile:获取或设置OutputCacheProfile名称。
Duration:获取或设置缓存项需要保留在缓存中的时间。
VaryByHeader:获取或设置用于改变缓存项的一组都好分隔的HTTP标头名称。
Location:获取或设置一个值,该值确定缓存项的位置,包括Any、Clint、Downstream、None、Server和ServerAndClient。默认值为Any。
VaryByControl:获取或设置一簇分好分隔的控件标识符,这些标识符包含在当前页或用户控件内,用于改变当前的缓存项。
NoStore:获取或设置一个值,该值确定是否设置了“Http Cache-Control:no-store”指令。
VaryByCustom:获取输出缓存用来改变缓存项的自定义字符串列表。
Enabled:获取或设置一个值,该值指示是否对当前内容启用了输出缓存。
VaryByParam:获取查询字符串或窗体POST参数的列表。
C# ObjectCache、OutputCache缓存的更多相关文章
- OutputCache缓存各参数的说明
Duration 缓存时间,以秒为单位,这个除非你的Location=None,可以不添加此属性,其余时候都是必须的. Location Location当被设置为None时,其余的任何设置将不起作用 ...
- [置顶]
MVC输出缓存(OutputCache参数详解)
1.学习之前你应该知道这些 几乎每个项目都会用到缓存,这是必然的.以前在学校时做的网站基本上的一个标准就是1.搞定增删改查2.页面做的不要太差3.能运行(ps真的有这种情况,答辩验收的时候几个人在讲台 ...
- MVC输出缓存(OutputCache参数详解)
版权声明:本文为博主原创文章,未经博主允许转载随意. https://blog.csdn.net/kebi007/article/details/59199115 1.学习之前你应该知道这些 几乎每个 ...
- MVC缓存
MVC入门系列教程-视频版本,已入驻51CTO学院,文本+视频学效果更好哦.视频链接地址如下: 点我查看视频.另外,针对该系列教程博主提供有偿技术支持,群号:226090960,群内会针对该教程的问题 ...
- MVC缓存02,使用数据层缓存,添加或修改时让缓存失效
在"MVC缓存01,使用控制器缓存或数据层缓存"中,在数据层中可以设置缓存的有效时间.但这个还不够"智能",常常希望在编辑或创建的时候使缓存失效,加载新的数据. ...
- MVC缓存,使用数据层缓存,添加或修改时让缓存失效
在"MVC缓存01,运用控制器缓存或数据层缓存"中,在数据层中可以设置缓存的有用时刻.但这个还不够"智能",常常期望在修改或创立的时分使缓存失效,加载新的数据. ...
- ABP入门系列(13)——Redis缓存用起来
ABP入门系列目录--学习Abp框架之实操演练 源码路径:Github-LearningMpaAbp 1. 引言 创建任务时我们需要指定分配给谁,Demo中我们使用一个下拉列表用来显示当前系统的所有用 ...
- Redis缓存用起来
Redis缓存用起来 1. 引言 创建任务时我们需要指定分配给谁,Demo中我们使用一个下拉列表用来显示当前系统的所有用户,以供用户选择.我们每创建一个任务时都要去数据库取一次用户列表,然后绑定到用户 ...
- 深入System.Web.Caching命名空间 教你Hold住缓存管理
一,System .Web.Caching与缓存工作机制简介 System.Web.Caching是用来管理缓存的命名空间,其父级空间是System.Web,由此可见,缓存通常用于Web网站的开发,包 ...
随机推荐
- ArcGIS Server API for JavaScript调用错误:已阻止跨源请求:同源策略禁止读取位于......
已阻止跨源请求:同源策略禁止读取位于 http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_World_2D/MapSe ...
- MT写的对URL操作的两个方法
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- [原创]Android从xml加载到View对象过程解析
我们从Activity的setContentView()入手,开始源码解析, //Activity.setContentView public void setContentView(int layo ...
- MSBuild .Targets 文件
MSBuild 附带几个 .targets 文件,这些文件包含常见方案中用到的项.属性.目标和任务.为了简化维护并增强可读性,系统自动将这些文件导入大多数 Visual Studio 项目文件中. 项 ...
- Windows Store 开发总结——文件操作
1.读取Isolated Storage 每个Metro程序都有三个文件夹:Local,Roaming,Temp.每个文件夹的访问方法都是相同的. Local用于将数据存储在本地,这是程序特定的文件夹 ...
- LeetCode:5_Longest Palindromic Substring | 最长的回文子串 | Medium
题目: Given a , and there exists one unique longest palindromic substring. 解题思路:1.简单思路:暴力破解法,时间复杂度O(n^ ...
- 在自己的对象里实现IEnumerator和IEnumerable
平时工作中我们经常用foreach来迭代一个集合.比如 foreach (Student student in myClass) { Console.WriteLine(student); } 基本所 ...
- 理解RxJava:(二)Operator,Operator
在第一部分,我讲解了RxJava的基本结构,也介绍了map()操作.然而,我能理解你仍旧不会选择使用Rxjava--你仍然还有很多东西没有学到.但是这个情况将很快得到改变.Rxjava一大部分的能力是 ...
- Ubuntu桌面版本和服务器版本之间的区别(转载)
转载自:http://blog.csdn.net/fangaoxin/article/details/6335992 http://www.linuxidc.com/Linux/2010-11/297 ...
- 【转】Oracle RAC 环境下的连接管理
文章转自:http://www.oracle.com/technetwork/cn/articles/database-performance/oracle-rac-connection-mgmt-1 ...