zoukankan      html  css  js  c++  java
  • 后台数据缓存的一点心得

    最近在实际使用中发现,当IIS应用程序池自动回收后,此时访问页面,会提示 “未将对象引用设置到对象的实例”的错误,查看代码发现,使用了类中的静态变量。

    public static List<ReportData> = new List<ReportData>();

    单看这个问题不大,因为此变量在类中,应用程序池回收后,因为类本身不是static,且不能变为static,所以要加以改造。

    使用类单例模式,就可以比较好的解决这一问题。

    因为类单例模式,在运行时实例唯一,这是做缓存的根本。

        public class EMPDataInterfaceDataCacheO : EMPDataCacheO
        {
            /// <summary>
            /// 数据接口中缓存类
            /// </summary>
            public class ListData : CacheListData { }
            /// <summary>
            /// 超时时间,3分钟
            /// </summary>
            private const int OverTime = 3;
            /// <summary>
            /// 缓存列表
            /// </summary>
            private List<ListData> cacheList;
            /// <summary>
            /// EMPDataInterfaceDataCache 实例
            /// </summary>
            private static EMPDataInterfaceDataCacheO cache;
            /// <summary>
            /// 获得缓存实例
            /// </summary>
            /// <returns>实例</returns>
            public static EMPDataInterfaceDataCacheO GetInstance()
            {
                if (cache == null)
                {
                    cache = new EMPDataInterfaceDataCacheO();
                }
                return cache;
            }
    
            private EMPDataInterfaceDataCacheO()
            {
                cacheList = new List<ListData>();
            }
        }

    以上是部分代码,类中实现了,缓存数据的存取,过期的自动清理等。

  • 相关阅读:
    杭州西湖、苏州园林
    新加坡
    泰国
    旅游常用英语语句
    React 脚手架支持Typescript和Sass
    用 Scoop 管理你的 Windows 软件
    Asp.Net Core WebAPI+PostgreSQL部署在Docker中
    Ionic 4 核心概念
    Ionic Framework 4 介绍
    Google Flutter框架:使用VS Code进行开发
  • 原文地址:https://www.cnblogs.com/sonicit/p/15674036.html
Copyright © 2011-2022 走看看