ASP.NET 缓存的使用
来源:互联网 发布:老虎淘宝客 编辑:程序博客网 时间:2024/05/16 05:16
应公司项目实际运营的情况来看,有些数据是经常访问的而且是不经常的改变的数据。
根据这种特性,需要加入缓存来减少对数据库的访问次数和提升网站的响应速度。
1、通过分析,发现对于同一个请求,请求会员的基本信息比较频繁,如 账户类型、积分、余额等。
但是这些信息并不能使用缓存。所以最优的做法就是使用HttpContext.Current 对象来暂存会员信息。
HttpContext.Items属性中可以存放任何类型数据,无论这个属性中存放什么数据,都会在请求处理结束后自动清除,这就是暂存状态,数据的存放时间非常短。基于这种特性,非常适合在会员信息的缓存。
var httpContext = HttpContext.Current; if (httpContext == null) { return //这里是从数据库获取信息; } var cachedValue = httpContext.Items["__PerRequestMemberSessionCache"] as GetCurrentMemberInformationsOutput;//从items中获取缓存对象 if (cachedValue == null) { cachedValue = //这里是从数据库获取信息; httpContext.Items["__PerRequestMemberSessionCache"] = cachedValue;//放入httpcontext 的items中 } return cachedValue;
2、还有另外一类数据,此类数据经常访问,但不经常变化的,可以使用HttpRuntime.Cache,我使用的是目前net中比较流行的abp框架,他对HttpRuntime.Cache做了进一步的封装。有兴趣的同学可以了解一下abp框架。代码如下:
public async Task<List<LineSettingDto>> XXX() { GetCurrentMemberInformationsOutput temp = await GetCurrentMemberInformationsAsync(); var lineSetting= _cacheManager.GetCache<string, List<LineSettingDto>>(EurCacheNames.GetTenantLineSettingCache).GetOrDefault(temp.Tenant.TenancyName); if (lineSetting == null) { var setting= //此处为从数据库读取配置信息; if (setting != null) { lineSetting = setting; _cacheManager.GetCache<string, List<LineSettingDto>>(EurCacheNames.GetTenantLineSettingCache).Set(temp.Tenant.TenancyName, setting); //将从数据库获取的数据放入缓存中 } } return lineSetting; }
其优点是:
1、将数据缓存,不用每次访问都查询数据库。
2、降低延迟,使响应速度加快。
3、既然使用缓存,那肯定也要设置缓存失效的时间,cache默认的缓存失效时间为60min,
WebModule中的PreInitialize方法中配置如下时间,就可以灵活的设置缓存的时间了。
Configuration.Caching.ConfigureAll(cache => { cache.DefaultAbsoluteExpireTime = TimeSpan.FromHours(8); }); Configuration.Caching.Configure(EurCacheNames.GetActiveFreightPlan, cache => { cache.DefaultAbsoluteExpireTime = TimeSpan.FromHours(2); });
总结:
缓存要慎用,对于单表查询且数据大不大的没有必要使用缓存,因为从数据库中读取和从缓存中读取,速度上并不会差别很大。
本人是一个新鸟,如有不对之处,还望指正。
阅读全文
0 0
- ASP.NET 缓存的使用
- asp.net 缓存使用
- Asp.net缓存的简单使用
- ASP.NET 缓存对象的使用
- asp.net的缓存
- ASP.NET的缓存
- ASP.NET的缓存
- ASP.NET的缓存
- asp.net的缓存
- ASP.NET的缓存
- Asp.net 禁止使用缓存
- 如何提高ASP.NET性能(1)—缓存的使用
- Asp.Net中缓存的使用介绍一
- Asp.Net中缓存的使用介绍二
- ASP.NET的缓存技术
- Asp.net的局部缓存
- ASP.NET的缓存技术
- ASP.NET的输出缓存
- Shell编程——基础入门
- 自定义hibernate validation注解
- Policy以不同策略不同型别生产对象
- UVA 572&& PoJ2386 两道DFS入门最经典的题目
- JZ2440 给root用添加密码
- ASP.NET 缓存的使用
- 文章标题
- 阿里云上的Elasticsearch2.3.4 安装
- EasyPlayerPro安卓流媒体播放器实现Android H.265硬解码流程
- 用canvas实现星图
- [C++ Primer Plus]学习笔记--C++内联函数
- 湖南省第十一届大学生计算机程序设计竞赛—E
- 大数据框架 Hadoop 和 Spark 的异同
- thinkphp框架模板中最简单的循环学习总结