• C# ObjectCache、OutputCache缓存


     1 /// <summary>
     2     /// 缓存操作类
     3     /// </summary>
     4     public class Cache
     5     {
     6         private static List<string> _allUseCacheKey = new List<string>();
     7         private static ObjectCache _cache = MemoryCache.Default;
     8 
     9         /// <summary>
    10         /// 添加缓存
    11         /// </summary>
    12         /// <param name="key">Key 唯一</param>
    13         /// <param name="value"></param>
    14         /// <param name="cacheOffset">超时时间</param>
    15         public static void Add(string key, object value, DateTimeOffset cacheOffset)
    16         {
    17             if (_allUseCacheKey.Contains(key))
    18             {
    19                 Remove(key);
    20             }
    21             _allUseCacheKey.Add(key);
    22             _cache.Add(key, value, cacheOffset);
    23         }
    24 
    25         /// <summary>
    26         /// 移除缓存
    27         /// </summary>
    28         /// <param name="key">Key</param>
    29         public static void Remove(string key)
    30         {
    31             if (_allUseCacheKey.Contains(key))
    32             {
    33                 _allUseCacheKey.Remove(key);
    34             }
    35             _cache.Remove(key);
    36         }
    37 
    38         /// <summary>
    39         /// 读取缓存
    40         /// </summary>
    41         /// <param name="key">Key</param>
    42         /// <returns></returns>
    43         public static object Read(string key)
    44         {
    45             if (_allUseCacheKey.Contains(key))
    46                 return _cache[key];
    47             return null;
    48         }
    49 
    50         /// <summary>
    51         /// 清除所有缓存
    52         /// </summary>
    53         public static void Clear()
    54         {
    55             foreach (string value in _allUseCacheKey)
    56             {
    57                 _cache.Remove(value);
    58             }
    59             _allUseCacheKey.Clear();
    60         }
    61     }
    public class SysuserStorageService
    {
    private int _adminId;
    
    public SysuserStorageService(int adminId)
    {
    _adminId = adminId;
    }
    
    /// <summary>
    /// 缓存一些内容
    /// </summary>
    public void Storage()
    {
    tbl_admin user = new tbl_admin();//根据实际需求获取对象
    Cache.Add(_adminId + "-Admin-" + SystemSetting.Wms, user, SystemSetting.OffSetTime);
    Cache.Add(_adminId + "-LastLoginTime-" + SystemSetting.Wms, DateTime.Now, SystemSetting.OffSetTime);
    }
    
    public tbl_admin GetAdmin
    {
    get { return (tbl_admin)Cache.Read(_adminId + "-Admin-" + SystemSetting.Wms); }
    }
    
    public string GetLastLoginTime
    {
    get { return ((DateTime)Cache.Read(_adminId + "-LastLoginTime-" + SystemSetting.Wms)).ToString("yyyy-MM-dd HH:mm:ss"); }
    }
    }
     public class SystemSetting
        {
            /// <summary>
            /// 缓存定义
            /// </summary>
            public const string ShopWms = "Wms";
    
            /// <summary>
            /// 缓存超时时间
            /// </summary>
            public static DateTimeOffset OffSetTime = DateTimeOffset.Now.AddHours(24);
    
            /// <summary>
            /// 登录Session
            /// </summary>
            public const string LoginSession = "";
        }

    SysuserStorageService storage = new SysuserStorageService(AdminId);//根据ID调用
    tbl_admin User = storage.GetAdmin;

    //页面缓存

    [OutputCache(Duration = 300, VaryByParam = "productno;brand;years")]

    上述代码使用@OutputCatch指令声明了页面缓存,该页面将被缓存300秒。@OutputCatch指令包括10个属性,通过这些属性能够分别为页面的不同情况进行缓存设置,常用的属性如下所示:

    CacheProfile:获取或设置OutputCacheProfile名称。

    Duration:获取或设置缓存项需要保留在缓存中的时间。

    VaryByHeader:获取或设置用于改变缓存项的一组都好分隔的HTTP标头名称。

    Location:获取或设置一个值,该值确定缓存项的位置,包括Any、Clint、Downstream、None、Server和ServerAndClient。默认值为Any。

    VaryByControl:获取或设置一簇分好分隔的控件标识符,这些标识符包含在当前页或用户控件内,用于改变当前的缓存项。

    NoStore:获取或设置一个值,该值确定是否设置了“Http Cache-Control:no-store”指令。

    VaryByCustom:获取输出缓存用来改变缓存项的自定义字符串列表。

    Enabled:获取或设置一个值,该值指示是否对当前内容启用了输出缓存。

    VaryByParam:获取查询字符串或窗体POST参数的列表。

  • 相关阅读:
    css三角形拼接多边形
    弹框提示Request failed with status code 401
    el-upload组件上传闪动
    vue-element-admin校验不通过 页面跳到滚动位置
    请求方式错误
    IE兼容11支持10不支持
    二次封装elementui弹框
    element多张上传的去除动画
    奇怪的知识增加了,python切片特点以及下标的活用,可变tuple
    LeafHttp,同步、异步请求的Http库
  • 原文地址:https://www.cnblogs.com/Tangcy/p/5710272.html
Copyright © 2020-2023  润新知