.NETFramework:Cache
| ylbtech-System.Web.Caching.Cache.cs |
| 1.返回顶部 |
#region 程序集 System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
// C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.Web.dll
#endregion using System.Collections;
using System.Reflection; namespace System.Web.Caching
{
//
// 摘要:
// 实现的 Web 应用程序缓存。 此类不能被继承。
[DefaultMember("Item")]
public sealed class Cache : IEnumerable
{
//
// 摘要:
// 在中使用 absoluteExpiration 中的参数 System.Web.Caching.Cache.Insert(System.String,System.Object)
// 方法调用,以指示项应该永远不会过期。 此字段为只读。
public static readonly DateTime NoAbsoluteExpiration;
//
// 摘要:
// 用作 slidingExpiration 中的参数 System.Web.Caching.Cache.Insert(System.String,System.Object)
// 或 System.Web.Caching.Cache.Add(System.String,System.Object,System.Web.Caching.CacheDependency,System.DateTime,System.TimeSpan,System.Web.Caching.CacheItemPriority,System.Web.Caching.CacheItemRemovedCallback)
// 方法调用,以禁用可调到期。 此字段为只读。
public static readonly TimeSpan NoSlidingExpiration; //
// 摘要:
// 初始化 System.Web.Caching.Cache 类的新实例。
public Cache(); //
// 摘要:
// 获取或设置指定键处的缓存项。
//
// 参数:
// key:
// 一个 System.String 对象,表示缓存项的键。
//
// 返回结果:
// 指定的缓存项。
public object this[string key] { get; set; } //
// 摘要:
// 获取存储在缓存中的项的数目。
//
// 返回结果:
// 存储在缓存中的项的数目。
public int Count { get; }
//
// 摘要:
// 获取用于缓存的可用字节数。
//
// 返回结果:
// 可用于缓存的字节数。
public long EffectivePrivateBytesLimit { get; }
//
// 摘要:
// 获取 ASP.NET 开始从缓存中删除项之前,应用程序可以使用的物理内存的百分比。
//
// 返回结果:
// 向应用程序可用物理内存的百分比。
public long EffectivePercentagePhysicalMemoryLimit { get; } //
// 摘要:
// 指定将项添加到 System.Web.Caching.Cache 具有依赖关系、 过期时间和优先级策略和您可以使用从删除插入的项时通知您的应用程序委托对象
// Cache。
//
// 参数:
// key:
// 用于引用项的缓存密钥。
//
// value:
// 要添加到缓存中的项。
//
// dependencies:
// 文件或缓存关键的依存关系项。 当任何依赖关系更改时,该对象将变为无效,并从缓存中删除。 如果没有依赖关系,此参数包含 null。
//
// absoluteExpiration:
// 此时已添加的对象过期并从缓存中删除的时间。 如果您使用可调到期, absoluteExpiration 参数必须是 System.Web.Caching.Cache.NoAbsoluteExpiration。
//
// slidingExpiration:
// 对象的到期时间和上次访问所添加的对象的时间之间的间隔。 如果此值为 20 分钟的等效项,该对象到期,并从缓存中删除 20 分钟后它上次访问。 如果您使用的绝对过期
// slidingExpiration 参数必须是 System.Web.Caching.Cache.NoSlidingExpiration。
//
// priority:
// 通过表示的对象的相对成本 System.Web.Caching.CacheItemPriority 枚举。 缓存时逐出对象; 使用此值具有较低的成本的对象会从缓存后再成本较高的对象。
//
// onRemoveCallback:
// 调用的委托,如果提供,是在从缓存中移除对象时。 可以使用此以通知应用程序时从缓存中删除它们的对象。
//
// 返回结果:
// 一个对象,表示该项目之前存储在缓存中; 如果已添加的项否则为 null。
//
// 异常:
// T:System.ArgumentNullException:
// key 或 value 参数设置为 null。
//
// T:System.ArgumentOutOfRangeException:
// slidingExpiration 参数设置为小于 TimeSpan.Zero 或一年以上。
//
// T:System.ArgumentException:
// absoluteExpiration 和 slidingExpiration 参数都设置为想要将添加到项 Cache。
public object Add(string key, object value, CacheDependency dependencies, DateTime absoluteExpiration, TimeSpan slidingExpiration, CacheItemPriority priority, CacheItemRemovedCallback onRemoveCallback);
//
// 摘要:
// 检索指定的项 System.Web.Caching.Cache 对象。
//
// 参数:
// key:
// 要检索的缓存项的标识符。
//
// 返回结果:
// 检索到的缓存项,或 null 如果未找到此项。
public object Get(string key);
//
// 摘要:
// 检索用于循环访问密钥设置的字典枚举数以及它们在缓存中包含的值。
//
// 返回结果:
// 要循环访问的枚举数 System.Web.Caching.Cache 对象。
public IDictionaryEnumerator GetEnumerator();
//
// 摘要:
// 将一项插入 System.Web.Caching.Cache 带有一个缓存键来引用其位置,并使用提供的默认值的对象 System.Web.Caching.CacheItemPriority
// 枚举。
//
// 参数:
// key:
// 用于引用项的缓存密钥。
//
// value:
// 要插入到缓存的对象。
//
// 异常:
// T:System.ArgumentNullException:
// key 或 value 参数为 null。
public void Insert(string key, object value);
//
// 摘要:
// 将对象插入 System.Web.Caching.Cache 文件或项的依赖项。
//
// 参数:
// key:
// 用于标识项的缓存密钥。
//
// value:
// 要插入缓存中的对象。
//
// dependencies:
// 文件或缓存关键的依存关系所插入对象。 当任何依赖关系更改时,该对象将变为无效,并从缓存中删除。 如果没有依赖关系,此参数包含 null。
//
// 异常:
// T:System.ArgumentNullException:
// key 或 value 参数为 null。
public void Insert(string key, object value, CacheDependency dependencies);
//
// 摘要:
// 将对象插入 System.Web.Caching.Cache 与依赖关系和过期策略。
//
// 参数:
// key:
// 用于引用该对象的缓存密钥。
//
// value:
// 要插入缓存中的对象。
//
// dependencies:
// 文件或缓存关键的依存关系所插入对象。 当任何依赖关系更改时,该对象将变为无效,并从缓存中删除。 如果没有依赖关系,此参数包含 null。
//
// absoluteExpiration:
// 从该处插入的对象过期并从缓存中删除的时间。 若要避免的本地时间,如从标准时间到夏时制的更改可能存在的问题,请使用 System.DateTime.UtcNow
// 而不是 System.DateTime.Now 为此参数值。 如果您使用的绝对过期 slidingExpiration 参数必须是 System.Web.Caching.Cache.NoSlidingExpiration。
//
// slidingExpiration:
// 对象的到期时间和上次访问所插入的对象的时间之间的间隔。 如果此值为 20 分钟的等效项,该对象会过期,可从缓存中删除上次访问后的 20 分钟。 如果您使用可调到期,
// absoluteExpiration 参数必须是 System.Web.Caching.Cache.NoAbsoluteExpiration。
//
// 异常:
// T:System.ArgumentNullException:
// key 或 value 参数为 null。
//
// T:System.ArgumentOutOfRangeException:
// 您设置 slidingExpiration 参数小于 TimeSpan.Zero 或一年以上的等效项。
//
// T:System.ArgumentException:
// absoluteExpiration 和 slidingExpiration 参数都设置为想要将添加到项 Cache。
public void Insert(string key, object value, CacheDependency dependencies, DateTime absoluteExpiration, TimeSpan slidingExpiration);
//
// 摘要:
// 将对象插入 System.Web.Caching.Cache 具有依赖关系、 过期时间和优先级策略和您可以使用从删除插入的项时通知您的应用程序委托对象 Cache。
//
// 参数:
// key:
// 用于引用该对象的缓存密钥。
//
// value:
// 要插入缓存中的对象。
//
// dependencies:
// 文件或缓存关键的依存关系项。 当任何依赖关系更改时,该对象将变为无效,并从缓存中删除。 如果没有依赖关系,此参数包含 null。
//
// absoluteExpiration:
// 从该处插入的对象过期并从缓存中删除的时间。 若要避免的本地时间,如从标准时间到夏时制的更改可能存在的问题,请使用 System.DateTime.UtcNow
// 而不是 System.DateTime.Now 为此参数值。 如果您使用的绝对过期 slidingExpiration 参数必须是 System.Web.Caching.Cache.NoSlidingExpiration。
//
// slidingExpiration:
// 对象的到期时间和上次访问所插入的对象的时间之间的间隔。 如果此值为 20 分钟的等效项,该对象会过期,可从缓存中删除上次访问后的 20 分钟。 如果您使用可调到期,
// absoluteExpiration 参数必须是 System.Web.Caching.Cache.NoAbsoluteExpiration。
//
// priority:
// 与存储在缓存中,如通过所表示的其他项相关对象的成本 System.Web.Caching.CacheItemPriority 枚举。 逐出对象; 时,缓存使用此值具有较低的成本的对象会从缓存后再成本较高的对象。
//
// onRemoveCallback:
// 调用的委托,如果提供,将从缓存中移除对象时。 可以使用此以通知应用程序时从缓存中删除它们的对象。
//
// 异常:
// T:System.ArgumentNullException:
// key 或 value 参数为 null。
//
// T:System.ArgumentOutOfRangeException:
// 您设置 slidingExpiration 参数小于 TimeSpan.Zero 或一年以上的等效项。
//
// T:System.ArgumentException:
// absoluteExpiration 和 slidingExpiration 参数都设置为想要将添加到项 Cache。
public void Insert(string key, object value, CacheDependency dependencies, DateTime absoluteExpiration, TimeSpan slidingExpiration, CacheItemPriority priority, CacheItemRemovedCallback onRemoveCallback);
//
// 摘要:
// 将对象插入 System.Web.Caching.Cache 对象与依赖关系、 过期策略和一个委托,可用于通知应用程序之前从缓存中移除的项。
//
// 参数:
// key:
// 用来引用对象的缓存密钥。
//
// value:
// 要向缓存中插入的对象。
//
// dependencies:
// 文件或缓存关键的依存关系项。 当任何依赖关系更改时,该对象将变为无效,并从缓存中删除。 如果没有依赖关系,此参数包含 null。
//
// absoluteExpiration:
// 从该处插入的对象过期并从缓存中删除的时间。 若要避免的本地时间,如从标准时间到夏时制的更改可能存在的问题,请使用 System.DateTime.UtcNow
// 而不是 System.DateTime.Now 为此参数值。 如果您使用的绝对过期 slidingExpiration 参数必须设置为 System.Web.Caching.Cache.NoSlidingExpiration。
//
// slidingExpiration:
// 该对象的到期的时间和上次访问缓存的对象的时间之间时间间隔。 如果此值为 20 分钟的等效项,该对象会过期,可从缓存中删除上次访问后的 20 分钟。 如果您使用可调到期,
// absoluteExpiration 参数必须设置为 System.Web.Caching.Cache.NoAbsoluteExpiration。
//
// onUpdateCallback:
// 从缓存中删除该对象之前将调用一个委托。 您可以用于更新缓存的项目,并确保它不删除从缓存。
//
// 异常:
// T:System.ArgumentNullException:
// key, ,value, ,或 onUpdateCallback 参数是 null。
//
// T:System.ArgumentOutOfRangeException:
// 您设置 slidingExpiration 参数小于 TimeSpan.Zero 或一年以上的等效项。
//
// T:System.ArgumentException:
// absoluteExpiration 和 slidingExpiration 参数都设置为想要将添加到项 Cache。- 或 -dependencies
// 参数是 null, ,和 absoluteExpiration 参数设置为 System.Web.Caching.Cache.NoAbsoluteExpiration,
// ,和 slidingExpiration 参数设置为 System.Web.Caching.Cache.NoSlidingExpiration。
public void Insert(string key, object value, CacheDependency dependencies, DateTime absoluteExpiration, TimeSpan slidingExpiration, CacheItemUpdateCallback onUpdateCallback);
//
// 摘要:
// 从该应用程序中移除指定的项 System.Web.Caching.Cache 对象。
//
// 参数:
// key:
// 一个 System.String 要移除的缓存项的标识符。
//
// 返回结果:
// 从其中移除的项 Cache。 如果未找到键参数中的值,将返回 null。
public object Remove(string key);
}
}
| 2.返回顶部 |
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace Purple.Code
{
public interface ICache
{
T GetCache<T>(string cacheKey) where T : class;
void WriteCache<T>(T value, string cacheKey) where T : class;
void WriteCache<T>(T value, string cacheKey, DateTime expireTime) where T : class;
void RemoveCache(string cacheKey);
void RemoveCache();
}
}
using System;
using System.Collections;
using System.Web; namespace Purple.Code
{
public class Cache : ICache
{
private static System.Web.Caching.Cache cache = HttpRuntime.Cache; public T GetCache<T>(string cacheKey) where T : class
{
if (cache[cacheKey] != null)
{
return (T)cache[cacheKey];
}
return default(T);
}
public void WriteCache<T>(T value, string cacheKey) where T : class
{
cache.Insert(cacheKey, value, null, DateTime.Now.AddMinutes(), System.Web.Caching.Cache.NoSlidingExpiration);
}
public void WriteCache<T>(T value, string cacheKey, DateTime expireTime) where T : class
{
cache.Insert(cacheKey, value, null, expireTime, System.Web.Caching.Cache.NoSlidingExpiration);
}
public void RemoveCache(string cacheKey)
{
cache.Remove(cacheKey);
}
public void RemoveCache()
{
IDictionaryEnumerator CacheEnum = cache.GetEnumerator();
while (CacheEnum.MoveNext())
{
cache.Remove(CacheEnum.Key.ToString());
}
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace Purple.Code
{
public class CacheFactory
{
public static ICache Cache()
{
return new Cache();
}
}
}
| 3. 调用返回顶部 |
public bool ActionValidate(string userId, string moduleId, string action)
{
//ylb 用户多权限
var authorizeurldata = new List<AuthorizeActionModel>();
var cachedata = CacheFactory.Cache().GetCache<List<AuthorizeActionModel>>("authorizeurldata_" + userId); //取缓存
if (cachedata == null)
{
var moduledata = moduleApp.GetList();
var buttondata = moduleButtonApp.GetList(); var userRoleEntitys = userRoleApp.GetListByUserId(userId); //获取用户角色
foreach (UserRoleEntity userRoleEntity in userRoleEntitys)
{
var authorizedata = service.IQueryable(t => t.F_ObjectId == userRoleEntity.F_RoleId).ToList();
foreach (var item in authorizedata)
{
if (item.F_ItemType == )
{
ModuleEntity moduleEntity = moduledata.Find(t => t.F_Id == item.F_ItemId);
authorizeurldata.Add(new AuthorizeActionModel { F_Id = moduleEntity.F_Id, F_UrlAddress = moduleEntity.F_UrlAddress });
}
else if (item.F_ItemType == )
{
ModuleButtonEntity moduleButtonEntity = buttondata.Find(t => t.F_Id == item.F_ItemId);
authorizeurldata.Add(new AuthorizeActionModel { F_Id = moduleButtonEntity.F_ModuleId, F_UrlAddress = moduleButtonEntity.F_UrlAddress });
}
}
}
CacheFactory.Cache().WriteCache(authorizeurldata, "authorizeurldata_" + userId, DateTime.Now.AddMinutes()); //存缓存
}
else
{
authorizeurldata = cachedata;
}
authorizeurldata = authorizeurldata.FindAll(t => t.F_Id.Equals(moduleId));
foreach (var item in authorizeurldata)
{
if (!string.IsNullOrEmpty(item.F_UrlAddress))
{
string[] url = item.F_UrlAddress.Split('?');
if (item.F_Id == moduleId && url[] == action)
{
return true;
}
}
}
return false;
}
| 4.返回顶部 |
| 5.返回顶部 |
| 6.返回顶部 |
![]() |
作者:ylbtech 出处:http://ylbtech.cnblogs.com/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 |
.NETFramework:Cache的更多相关文章
- HTML 5缓存机制:Cache Manifest配置实例
Cache Manifest是HTML 5的一种缓存机制,文章作者直接用博客当测试环境,虽然[color=#444444 !important]应用起来非常简单,但效果却出奇的好.缓存后的速度,简直是 ...
- ThinkPHP函数详解:cache方法
cache方法是3.0版本开始新增的缓存管理方法.注意:3.1.2版本后因cache方法并入原S方法,所以cache方法不再建议使用,用S方法即可. cache 用于缓存设置.获取.删除操作 用法ca ...
- .NETFramework:WebClient
ylbtech-.NETFramework:WebClient 1.程序集 System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5 ...
- .NETFramework:HttpContext
ylbtech-.NETFramework:HttpContext 1.返回顶部 1. #region 程序集 System.Web, Version=4.0.0.0, Culture=neutral ...
- .NETFramework:HttpRuntime
ylbtech-.NETFramework:HttpRuntime 1.返回顶部 1. #region 程序集 System.Web, Version=4.0.0.0, Culture=neutral ...
- .NETFramework:System.Net.WebClient.cs
ylbtech-.NETFramework:System.Net.WebClient.cs 提供用于将数据发送到和接收来自通过 URI 确认的资源数据的常用方法 1.返回顶部 1. #region 程 ...
- 转:Cache相关
声明:本文截取自http://blog.163.com/ac_victory/blog/static/1033187262010325113928577/ (1)“Cache”是什么 Cache(即高 ...
- latch:cache buffers chains的优化思路
数据块在buffer cache存放是以linked list方式存放的.当一个session想要访问/修改buffer cache的block,首先需要通过hash算法检查该block是否存在于bu ...
- Django学习之十二:Cache 缓存组件
目录 Django Cache 缓存组件 缓存逻辑伪代码 配置缓存源 可配置参数说明 01. Django的默认缓存 02. 基于Redis的django-redis 03. 自定义cache 04. ...
随机推荐
- luogu P1080 国王游戏
题目描述 恰逢 H 国国庆,国王邀请 n 位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右手上面分别写下一个整数,国王自己也在左.右手上各写一个整数.然后,让这 n 位大臣排成一排,国王站在队伍的最 ...
- 【spring data jpa】报错如下:Caused by: javax.persistence.EntityNotFoundException: Unable to find com.rollong.chinatower.server.persistence.entity.staff.Department with id 0
报错如下: org.springframework.orm.jpa.JpaObjectRetrievalFailureException: Unable to find com.rollong.chi ...
- 【kotlin】报错:required:LIst<XXX> found:List<Unit>此类型的问题
出现问题如下: 解决方式如下: 解决思路:上面报出来的错误很明显,就是说想要的是List<XXX>类型但是给的却是List<Unit>类型,给的不是它想要的嘛 关键就是解决问题 ...
- Python机器学习--手写体识别(KNN+MLP)
MLP实现 调整参数比较性能结果 # -*- coding: utf-8 -*- """ Created on Wed Aug 30 21:14:38 2017 @aut ...
- Halcon导出的cpp, VC++环境配置
方式一: 1.project ->设置(Alt+F7) -> C/C++ ->分类:预处理器 ->附加包括路径 添加:$(HALCONROOT)/include,$(HAL ...
- BUPT复试专题—密码(2009)
题目描述 输入 有多组输入,每组: 第一行:由26个小写字母组成的串以空格隔开,如 b a c e u f g h i j k l m n o p q r s t v w x y z d v y ...
- Exactly-once Spark Streaming from Apache Kafka
这篇文章我已经看过两遍了.收获颇多,抽个时间翻译下,先贴个原文链接吧.也给自己留个任务 http://blog.cloudera.com/blog/2015/03/exactly-once-spark ...
- 《大话操作系统——做坚实的project实践派》(7)
写操作系统内核须要了解一个详细计算平台的CPU,包含这个CPU里的寄存器和异常中断处理机制
- Collection接口和Collections类的简单区别和讲解
这里仅仅进行一些简单的比较,如果你想要更加详细的信息话,请自己百度. 1.Collection: 是集合类的上层接口.本身是一个Interface,里面包含了一些集合的基本操作. Collection ...
- ActiveMQ(一) 转
package pfs.y2017.m11.mq.activemq.demo01; import javax.jms.Connection; import javax.jms.DeliveryMode ...
