zoukankan      html  css  js  c++  java
  • 【原】独立小应用程序性能优化简化版,减少数据库访问次数,提高应用程序处理效率,缓存之 HttpRuntime.Cache

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

          低风险创业:  

    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秒过期,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)//默认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。

  • 相关阅读:
    debug: if (va=1) 和 if (va==1)的区别
    必定管用!关于如何在电脑上恢复itunes中的音乐库(Mac Windows统统适用)
    关于Matlab中自动生成的asv文件
    LaTeX表格字体大小控制
    ANSYS中应力强度因子与J积分的计算
    Notepad++取消输入单词时出现提示
    notepad++的apdl高亮xml文件
    Power Graphics
    19个必须知道的Visual Studio快捷键
    APDL命令流:将ansys分析结果输出为tecplot格式
  • 原文地址:https://www.cnblogs.com/luofuxian/p/9447008.html
Copyright © 2011-2022 走看看