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网站的开发,包 ...
随机推荐
- 精通MVC网站、MVVM开发模式、Razor语法
http://www.cnblogs.com/powertoolsteam/p/MVC_one.html ASP.NET MVC (一)——深入理解ASP.NET MVC 以下是ASP.NET MVC ...
- 单元测试mock之mockito使用
先来一个简单的例子来感受一下 外部接口类:TestService.java package com.yzl.mock; /** * 测试用服务 * * @author yangzhilong */ p ...
- A little problem for pt-pmp
https://bugs.launchpad.net/percona-toolkit/+bug/1320168 We use the pt-pmp (a variety for pmp !http:/ ...
- node-sass 安装卡在 node scripts/install.js 解决办法
转自:https://segmentfault.com/a/1190000005921721 ======== 7月12日更新 ======== 总的来说就是两种方法解决: SASS_BINARY_S ...
- lua中得栈
如果你看了LUA的文档,那么就应该很清楚LUA与C交互数据时都是用到LUA中所谓的stack.那么当我调用lua_open函数之后栈是什么样的呢?空的(luaopen_base等会往栈上加进一些东西) ...
- [转]阎宏博士的JAVA与模式
阎宏,1964年出生于天津市.1987年毕业于中国科技大学近代物理系,1990年于中科院理论物理所获硕士学位,1992年获博士学位,翌年赴日本京都大学进行博士后研究工作. 作者曾于美国花旗银行(Cit ...
- 实现让Lync client也能够"潜水"隐身聊天
看到MSN或QQ,都支持隐身聊天. Lync Server 2013也是支持的. 1.Server端:Lync 2013 Server 缺省策略是没有设置显示脱机功能.(设置前截图) 2.直 ...
- Oracle Purchasing QUESTIONS AND ANSWERS
Topic Summary Topic: CORRECTIONS: Corrections Topic: DELIVER: Receiving Delivery Topic: DROPSHIP: Dr ...
- Til the Cows Come Home(最短路)
Til the Cows Come Home Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I ...
- 如何复制DataRow(dataTabel中的行)
由于需要对dataTabel中的行进行上移和下移操作: row 1 行号0 row2 行号1 row3 行号2 例如将row3上移一行,即row2和row3对调位置. ...