独立小应用程序性能优化,减少数据库访问次数,提高应用程序处理效率

      低风险创业:  

1、HttpRuntime.Cache

  • HttpRuntime.Cache 相当于就是一个缓存具体实现类,这个类虽然被放在了 System.Web 命名空间下了。但是非 Web 应用也是可以拿来用的。
  • HttpContext.Cache 是对上述缓存类的封装,由于封装到了 HttpContext ,局限于只能在知道 HttpContext 下使用,即只能用于 Web 应用。

2、.绝对过期时间和相对过期时间  

 /// <summary>
/// 设置数据缓存,相对过期
/// --键值存在时会替换原数据
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="cacheKey">键值</param>
/// <param name="objObject"></param>
/// <param name="timeout">相对过期时间,最后一次访问所插入对象时与该对象到期时之间的时间间隔(单位:秒)</param>
public static void SetRelativeCache<T>(string cacheKey, T objObject, int timeout = )//默认30秒过期,30秒不访问就会过期
{
try
{
if (objObject == null) return;
var objCache = HttpRuntime.Cache;
//相对过期时间,最后一次访问的时间超过了时间间隔后才会到期
objCache.Insert(TypeName<T>() + cacheKey, objObject, null, Cache.NoAbsoluteExpiration, TimeSpan.FromSeconds(timeout), CacheItemPriority.High, null);
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// 设置数据缓存,绝对过期时间
/// --键值存在时会替换原数据
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="cacheKey"></param>
/// <param name="objObject"></param>
/// <param name="timeout">绝对过期时间(单位:秒,默认300秒以后就会过期)</param>
public static void SetAbsoluteCache<T>(string cacheKey, T objObject, int timeout = )//默认300秒
{
try
{
if (objObject == null) return;
var objCache = HttpRuntime.Cache;
//绝对过期时间, TimeSpan.Zero
objCache.Insert(TypeName<T>() + cacheKey, objObject, null, DateTime.Now.AddSeconds(timeout), Cache.NoSlidingExpiration, CacheItemPriority.High, null);
}
catch (Exception ex)
{
throw ex;
}
}

注意事项:

absoluteExpiration
类型:System.DateTime
所添加对象将过期并被从缓存中移除的时间。如果使用相对过期,则 absoluteExpiration 参数必须为 NoAbsoluteExpiration。

slidingExpiration
类型:System.TimeSpan
最后一次访问所添加对象时与该对象过期时之间的时间间隔。如果该值等效于 20 分钟,则对象在最后一次被访问 20 分钟之后将过期并从缓存中移除。如果使用绝对过期,则 slidingExpiration 参数必须为 NoSlidingExpiration。

最新文章

  1. Spring ApplicationContext 简解
  2. Java 文件和byte数组转换
  3. 【阿里云产品公测】与云引擎ACE第一次亲密接触
  4. How to Use Rsync to Sync New or Changed/Modified Files in Linux
  5. Large-Scale Deployment of SharePoint Team Services
  6. WMvare桥接模式固定IP
  7. js动态获取时间的方式
  8. tcp ip 协议安全
  9. Ubuntu 18.04安装中文输入法
  10. C#基础(204)--对象初始化器,基本数据类型与引用数据类型特点总结,ref,out关键字的使用
  11. linux 学习笔记 查看端口
  12. C#调用WebService的简单方式
  13. java内存配置举例
  14. 先打11.2.0.3.8这个PSU,后建库
  15. java.lang.NoClassDefFoundError: org/bouncycastle/jce/provider/BouncyCastleProvider
  16. yum 与 apt 的对比
  17. 关于php中的exec命令
  18. Sutherland-Hodgeman多边形裁剪
  19. 【Struts2】如何查看Struts2框架的源码
  20. USB2.0学习笔记连载(十):关于WIN8及以上系统哈希值问题

热门文章

  1. WPF 控件树
  2. hasNextInt()方法
  3. win10 64位 mysql安装过程出现status显示failed
  4. Yii2.0数据格式器
  5. SQL问题:未启用当前数据库的 SQL Server Service Broker
  6. VirtualKD + Windbg 调试Win10虚拟机
  7. C#反射调用小DEMO
  8. 贴一发STL源码
  9. SSave ALAsset image to disk fast on iOS
  10. initWithNibName/awakeFromNib/initWithCoder